相关疑难解决方法(0)

从Python调用和控制GDB

我正在运行Python GUI应用程序.我想从中调用和控制GDB,比如加载可执行文件,设置断点等.我看到GDB有一个命令行界面,可以通过向GDB进程发送字符串来使用,但是我想用Python的方式来做.有gdb.py吗?我看到"archer"分支有类似"import gdb"的东西,但它在Ubuntu的默认Python安装中不起作用.我从哪里获得这个模块,还是有其他方法可以从Python控制GDB?

python gdb

24
推荐指数
2
解决办法
2万
查看次数

在Python脚本中控制的GDB中添加断点命令列表

我正在使用Python通过批处理命令控制GDB.这是我如何调用GDB:

$ gdb --batch --command=cmd.gdb myprogram
Run Code Online (Sandbox Code Playgroud)

cmd.gdb列表只包含调用Python脚本的行

source cmd.py
Run Code Online (Sandbox Code Playgroud)

并且cmd.py脚本尝试创建断点和附加命令列表

bp = gdb.Breakpoint("myFunc()") # break at function in myprogram
gdb.execute("commands " + str(bp.number))
# then what? I'd like to at least execute a "continue" on reaching breakpoint...  
gdb.execute("run")
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何将任何GDB命令附加到Python脚本的断点.有没有办法做到这一点,或者我错过了一些更容易和更明显的自动执行断点特定命令的工具?

python gdb

7
推荐指数
1
解决办法
2142
查看次数

gdb - 将内部命令的输出通过管道传输到 shell 命令

有什么方法可以将内部 gdb 命令的输出通过管道传输到某些 shell 命令,例如- ingrep的变体?[cmd] ! grepmdb

更清楚地说:在solaris中mdb你可以写

main::dis ! grep call
Run Code Online (Sandbox Code Playgroud)

检测从 main 调用哪些函数(或 grep 一些寄存器名称以查看它是如何更改的)。我很感兴趣是否有可能只在 gdb 中这样做而无需从 gdb 切换。

gdb

5
推荐指数
1
解决办法
7573
查看次数

如何在GDB的断点处打印当前的源代码行?

我想设置一个"滚动"断点gdb; 只打印当前的源代码行,并提供一些信息; 然后继续 我从这样的事情开始:

break doSomething
commands
  continue
end
Run Code Online (Sandbox Code Playgroud)

这本身打印出:

Breakpoint 1, doSomething () at myprog.c:55
55  void doSomething() {
Run Code Online (Sandbox Code Playgroud)

我想删除"Breakpoint X ... at ..."消息,可以使用silent- 然后打印出源代码行; 所以我试过了:

break doSomething
commands
  silent
  list 
  continue
end
Run Code Online (Sandbox Code Playgroud)

这导致10行列表,如下所示

50  // some comments
...
55  void doSomething() {
...
59  // other comments
Run Code Online (Sandbox Code Playgroud)

问题是,说list 1再次给出10行,只是从第一行开始; 虽然做的list +0,+0确实只提供一行来源 - 但错误的行(在我的情况下,它给出了第50行).

那么,我意识到可以通过使用程序计数器获取并打印当前程序地址$pc- 并且考虑到也可以列出程序地址,我试过这个:

break doSomething
commands
  silent
  #print $pc
  list *$pc,+0
  continue
end
Run Code Online (Sandbox Code Playgroud)

这会产生正确的源代码行 - 但由于某种原因,再次使用额外的消息,这次"ADDR在X …

gdb

5
推荐指数
1
解决办法
2773
查看次数

标签 统计

gdb ×4

python ×2