如何使用 JDebug 为 bt 堆栈跟踪选项调用 "bt" 命令
How to invoke "bt" command using JDebug for bt stack trace option
我正在使用 Jdebug 系统调用 python 并尝试自动执行“bt”命令的过程,如下所示。
它包含两个步骤。
jdebug core-tarball.0.tgz
收到回复:
Using '/tmp' as temporary location
jdebug version: 5.0.0
[File is compressed. This may take a moment...]
....
[Current thread is 1 (LWP 100276)]
(gdb)
如上所示,出现了 (gdb) 提示,现在我需要传递“bt”命令并从 gdb 提示中读回响应。
不确定如何通过 python 或在 shell 脚本发送“bt”命令并读回响应。
我希望将这两个步骤自动化:
Step #1: jdebug filename
Step #2 bt
[在 gdb 提示符下调用 'bt' 并读回响应行,即 stack_trace 信息] 通过 pyton 或通过 os.system 调用。
您可以使用子进程模块的 Popen 写入标准输入:
from subprocess import Popen, PIPE
proc = Popen(['jdebug', 'core-tarball.0.tgz'], stdin=PIPE)
proc.stdin.write("bt\r")
您可以使用 Popen.communicate() 来实现。
import subprocess
p = subprocess.Popen(["jdebug", "core-tarball.0.tgz"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
stdout_data, stderr_data = p.communicate("bt")
print(stdout_data)
print(p.returncode)
我正在使用 Jdebug 系统调用 python 并尝试自动执行“bt”命令的过程,如下所示。
它包含两个步骤。
jdebug core-tarball.0.tgz
收到回复:
Using '/tmp' as temporary location
jdebug version: 5.0.0
[File is compressed. This may take a moment...]
....
[Current thread is 1 (LWP 100276)]
(gdb)
如上所示,出现了 (gdb) 提示,现在我需要传递“bt”命令并从 gdb 提示中读回响应。
不确定如何通过 python 或在 shell 脚本发送“bt”命令并读回响应。
我希望将这两个步骤自动化:
Step #1: jdebug filename
Step #2 bt
[在 gdb 提示符下调用 'bt' 并读回响应行,即 stack_trace 信息] 通过 pyton 或通过 os.system 调用。
您可以使用子进程模块的 Popen 写入标准输入:
from subprocess import Popen, PIPE
proc = Popen(['jdebug', 'core-tarball.0.tgz'], stdin=PIPE)
proc.stdin.write("bt\r")
您可以使用 Popen.communicate() 来实现。
import subprocess
p = subprocess.Popen(["jdebug", "core-tarball.0.tgz"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
stdout_data, stderr_data = p.communicate("bt")
print(stdout_data)
print(p.returncode)