是否可以管GDB命令?
问题描述:
在GDB中是否有一种方法可以级联两个命令,如管道un UNIX? 我试图管道,但它没有工作。是否可以管GDB命令?
,如果我想看到什么是存储在0xbfffefd4地址,I型:
x/x 0xbfffefd4
它给了我0xbffff1dc在我的例子
如果现在我想看到什么是存储在0xbffff1dc,我必须键入:
x/x 0xbffff1dc
有没有办法管这2个命令?
有点像x/x(x/x 0xbfffefd4)?
顺便说一句,有没有办法显示字符,而不是十六进制?
答
可以用几种方式来编写gdb命令,但这并不容易。
在间接性的特定情况下,您可以使用C运算符。那就是:
(gdb) x/x *(void**)0xbfffefd4
顺便说一句,有没有一种方式来显示字符,而不是十六进制?
请参阅help x
- 它表示/c
格式显示字符。另一种方式是一个指针转换为一个char *
和gdb将打印它作为一个字符串:
(gdb) print (char *) 0xADDR
对于命令的更普遍的组成(相对于表达,这是更简单的处理),有两种方法。两者都是一种痛苦。
旧学校的方法是使用日志和shell
的组合。你所做的是使用set logging
及其子命令将输出写入文件。然后使用shell
将此文件重写为新的gdb脚本。最后,source
生成的文件执行你想要的命令。
新的学校方法是在Python中编写一个自定义命令,它可以做你想做的事。如果这是你真正想要的,你可以编写一个通用合成命令。