如何使用python和pygdbmi库暂停GDB运行

2024-10-02 12:22:26 发布

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

我正在编写python脚本来调试运行在ARM芯片上的嵌入式软件。在

为此,我使用pygdbmi python库。这个库允许我配置和启动脚本,但是有一个特性我找不到:我找不到暂停程序执行的方法。在

我想先执行我调试的软件一段时间(比如1秒),然后再挂起它来检查全局变量值等。为此,我想发送“continue”到gdb来运行我的程序,然后休眠1秒,最后发送“-exec interrupt”来挂起程序并向gdb发送新命令。在

下面是我使用的部分源代码:

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')

执行此python脚本时,出现以下错误:

^{pr2}$

因此,当调试的软件正在运行时,我似乎无法向gdb写入新的命令。在

我该如何暂停我的软件?当我手动使用GDB时,我通过发送Ctrl-C信号(SIGINT)来实现这一点,我希望从python中执行同样的操作。在


Tags: to命令程序脚本软件芯片writearm
1条回答
网友
1楼 · 发布于 2024-10-02 12:22:26

嗨,我是pygdbmi的开发者。在

你能做到的

import os

# create gdbmi instance

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

我想添加一种新方法来实现这一点,比如send_signal_to_gdb。在

我在github页面上创建了一个问题,并将在下一个版本中添加这些方法:https://github.com/cs01/pygdbmi/issues/26。在

相关问题 更多 >

    热门问题