gdbで非対話的にいくつかのコマンドを実行するためにPythonのサブプロセスを使用しようとしています。複数の引用符で囲まれた引数を持つPopenを使用しています
私はシェルで実行したい同等のコマンドは次のようになります。私は次の出力をしたい
gdb - 9833 -ex "set someval=50" -ex "p someval" --batch
を:
[Thread debugging using libthread_db enabled]
[New Thread 0x2b6c64f09dc0 (LWP 9833)]
[New Thread 0x549ec940 (LWP 12128)]
[New Thread 0x585f2940 (LWP 12127)]
: ...
0x0000003670407655 in pthread_join() from /lib64/libpthread.so.0
$1 = 50
私は同じ出力を得るためにPythonでスクリプトにそれを試してみてください、gdb引数は実行されません。 cmdlineのargsを使用してコマンド文字列を入力しています。
出力を印刷するときにgdbがpidに付いていますが、gdbの出力が表示されず、実行されたセットも表示されません。
ここに私のスクリプトです:
cmd = ['gdb','-',pid,'-ex','"set ' + sys.argv[2] + '=' + sys.argv[3] + '"','-ex','"p ' + sys.argv[2] + '"','--batch']
print cmd
result = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()
print result
は、@larsks、ありがとうございました。あなたの応答は、cmd形式の私の混乱した理解を本当にクリアしました。残念ながら、私は自分の環境でPython 2.4に悩まされていますので、より洗練されたstr形式は使用できません。