GDB没有使用python脚本的“中断”命令停止

2024-04-19 01:24:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在为这件事抓狂。我在网上搜索过,似乎找不到解决问题的办法。我尝试使用python的gdb模块自动测试一些代码。我可以执行基本的命令,除了停止在后台运行的进程外,一切都正常。目前,我在后台继续我的程序后,中断点如下:

gdb.execute("c&")

然后我与正在运行的程序交互,读取不同的常量值并从程序中获得响应。
接下来,我需要获取一块内存,以便运行以下命令:

gdb.execute("interrupt") #Pause execution gdb.execute("dump binary memory montiormem.bin 0x0 (&__etext + 4)") #dump memory to file

但是当我运行内存转储时,我得到一个错误消息,说在目标运行时命令不能运行,在错误发生后,中断命令运行并且目标被暂停,然后我可以从gdb控制台窗口运行内存转储。在

不久前我发现了一个类似的问题,似乎没有得到答案here。在

我用的是python2.7。在

我还发现了这个链接,它似乎是issue,但没有迹象表明它是否在我的gdb构建中(这似乎不太可能)。在


Tags: 模块内存代码命令程序目标execute错误
1条回答
网友
1楼 · 发布于 2024-04-19 01:24:14

我只是在编写一些自动化测试脚本时遇到了同样的问题。我注意到'interrupt'命令直到当前脚本退出后才会停止应用程序。在

不幸的是,这意味着您需要在引起中断的任何时候对脚本进行分段。在

脚本1:

gdb.execute('c&')
gdb.execute('interrupt')

脚本2:

^{pr2}$

相关问题 更多 >