有没有办法将gdb中最后一个命令的输出存储到字符串中?我想要做的是存储所选机器级指令的地址信息。重定向输出不是解决方案,因为它会产生太多输出。模拟器也是一个解决方案,但我想看看是否可以使用gdb,因为我只想在一小块代码上进行分析。
所以我需要这样的东西:
(gdb) display/i $pc
(gdb) 1: x/i $pc 0x100000d2e <main+61>: jle 0x100000d02 <main+17
(gdb) set $foo = ??? somehow set this to display line 1
(gdb) call myFunc($foo)
(我排除了循环控件以保持示例简单)
还是会有另一种方法吗?
答案 0 :(得分:0)
据我所知,这是不可能的,考虑到作者的所有Lisp背景,这有点令人惊讶:)你需要重定向(grep
,sed
和{{1}在大文件上创造奇迹,并且总是awk
),或者你自己的基于perl
的指令解码,我认为这不是一个选项。
然后我真的不明白你想要做什么。找出跳跃目标?搬迁的正确性?在运行时之前你还不知道代码是什么?更多细节可能指向更好的方向。
只是一些链接 - 尚未尝试过 - 您可能想要使用$pc
设置,看看是否可以让Python命令文件适合您:
请参阅Extending GDB和Python in GDB。