如何从gdb中提取数据以便在另一个程序中检查?
我正在使用gdb来调试程序。为了查看数组udata中的内容,我创建了一个名为printudata的源文件,其内容如下:
print udata[0]
print udata[1]
print udata[2]
...
print udata[143]在gdb中,我可以使用源命令执行该命令,并获得如下输出:
(gdb) source printudata
$399 = 1
$400 = 2.5
$401 = .3-10
...
$542 = <number> 到目前为止,这是我所能做的检查记忆的最好方法。
我唯一能想到的就是(学习正则表达式),把所有的东西都去掉,直到等号为止,这样我就可以把它粘贴到一个电子表格中,它会告诉我它是否正确。
这真的是从gdb获得输出的最佳方法吗?我正在自学这一切,并且只有Linux附带的基本免费工具(并且是使用上述所有技术的初学者)。
发布于 2013-05-30 21:17:38
如果数组实际上是如下所示,则可以打印数组:
p udata但是,如果udata实际上是一个指针,那么您可以使用强制转换将gdb打印成数组。
p *(double(*)[144])udata如果您确实希望在某一时间输出当前“脚本”的行,可以定义一个函数并使用一个循环:
define print_udata
set $i=0
while ($i < 144)
p udata[$i]
set $i=$i+1
end
end要将输出记录到文件中,可以启用/禁用日志记录:
set logging on
...gdb commands...
set logging off输出将位于一个名为gdb.txt的文件中。
发布于 2013-05-31 02:05:03
除此之外,gdb还有"output“和"printf”命令。它们不会将值输入到值历史记录中,它们会让您更精确地控制输出。
发布于 2013-05-30 21:17:27
gdb在自己的脚本语言和python中都内置了脚本。您甚至可以在python程序中编写GDB脚本。您可以使用任何这些选项将数据写入文件。
有关python & gdb 这里的更多信息。
https://stackoverflow.com/questions/16845970
复制相似问题