2017-11-06 18 views
1

私はARMチップ上で動作する組み込みソフトウェアをデバッグするためのpythonスクリプトを書いています。pythonとpygdbmiライブラリを使ってGDBを実行する方法を中断する方法

これを行うには、pygdbmi pythonライブラリを使用します。このライブラリは私のスクリプトを設定し起動することができますが、見つけられない機能が1つあります。プログラムの実行を中断する方法が見つけられません。

私はグローバル変数の値などをチェックするためにそれを一時停止する前に、ある一定の時間(1秒と言いましょう)デバッグするソフトウェアを実行したいと思います。これを実行するには、gdbに "continue" 1秒間スリープし、最後に "-exec-interrupt"を送信してプログラムを中断し、gdbに新しいコマンドを送信します。

​​

は、だから、私ようだ:私はこのPythonスクリプトを実行すると

gdbmi = GdbController("arm-none-eabi-gdb") 
# swPath is the path to my software binary 
gdbmi.write('-file-exec-and-symbols %s' % swPath) 
# I have to connect to an openOCD server 
gdbmi.write('tar rem :3333') 
gdbmi.write('monitor reset halt') 
gdbmi.write('load') 
gdbmi.write('c') 
time.sleep(1) 
gdbmi.write('-exec-interrupt') 

、私は次のようなエラーが発生している:ここで

は、私がそのために使用するソースコードの一部でありますデバッグされたソフトウェアが実行されているときにgdbに新しいコマンドを書き込むことはできません。

ソフトウェアを一時停止するにはどうすればよいですか?私がGDBを手動で使用するときは、Ctrl-Cシグナル(SIGINT)を送ることでこれを行います。これはPythonからも同じことをしたいのです。

答えて

1

こんにちは、私はpygdbmiの開発者です。

あなたは、私は、このようなsend_signal_to_gdbのような新しい方法でこれを行う方法を追加したい

import os 

# create gdbmi instance 

os.kill(gdbmi.gdb_process.pid, 2) # sends signal 2 (SIGINT) to gdb 

を行うことができます。

githubページで問題を作成し、次のリリースでこれらのメソッドを追加します:https://github.com/cs01/pygdbmi/issues/26

関連する問題