2016-06-25 71 views
1

在GDB中是否有一种方法可以级联两个命令,如管道un UNIX? 我试图管道,但它没有工作。是否可以管GDB命令?

,如果我想看到什么是存储在0xbfffefd4地址,I型:

x/x 0xbfffefd4 

它给了我0xbffff1dc在我的例子

如果现在我想看到什么是存储在0xbffff1dc,我必须键入:

x/x 0xbffff1dc 

有没有办法管这2个命令?

有点像x/x(x/x 0xbfffefd4)?

顺便说一句,有没有办法显示字符,而不是十六进制?

回答

1

可以用几种方式来编写gdb命令,但这并不容易。

在间接性的特定情况下,您可以使用C运算符。那就是:

(gdb) x/x *(void**)0xbfffefd4 

顺便说一句,有没有一种方式来显示字符,而不是十六进制?

请参阅help x - 它表示/c格式显示字符。另一种方式是一个指针转换为一个char *和gdb将打印它作为一个字符串:

(gdb) print (char *) 0xADDR 

对于命令的更普遍的组成(相对于表达,这是更简单的处理),有两种方法。两者都是一种痛苦。

旧学校的方法是使用日志和shell的组合。你所做的是使用set logging及其子命令将输出写入文件。然后使用shell将此文件重写为新的gdb脚本。最后,source生成的文件执行你想要的命令。

新的学校方法是在Python中编写一个自定义命令,它可以做你想做的事。如果这是你真正想要的,你可以编写一个通用合成命令。

相关问题