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