DEBUG用户的gdb指南

时间:2016-02-02 04:12:53

标签: debugging gdb

我非常熟悉DOS中的DEBUG.COM。我刚才需要使用gdb,但我被困住了。我确信gdb功能更强大,更强大,但我只需要有效地逐步完成一段代码(不是由任何特定语言生成),并且可以很好地查看寄存器和选定的内存位置。什么是gdb相当于DEBUG的:

U - unassemble (from select memory location)
D - dump
R - shows (selected) registers
T - executes instruction at current IP
P - step over
在我甚至可以检查寄存器之前,

gdb似乎需要run作为第一步。但是我希望在我想要运行之前看到第一条指令是什么。如果我不知道它在哪里,我不能在第一条指令上设置断点。这对我来说是一个鸡和蛋的问题。我必须遗漏一些基本的东西。

1 个答案:

答案 0 :(得分:1)

我不知道DEBUG,但也许我可以帮助解决你的gdb问题。不过,您可能最好还是阅读gdb教程。您还可以使用gdb help命令查看任何命令的更多详细信息,例如help disassemble

您的问题似乎集中在低级别的程序集调试上。 gdb是一个多级调试器,我的意思是它可以在各个级别工作;我会说从根本上说它是一个源级调试器,但它也可以在汇编级别运行。

  • unassemble。 gdb等价物可能是disassemble

  • dump。我不知道这是做什么的。如果它转储内存,那么你需要gdb x命令。

  • R。尝试info regs,或者您可以使用名称打印选定的注册表,例如print $rax

  • T。要执行单个汇编指令si

  • P。请参阅gdb ni命令。

对于第一条指令,您需要了解有关该平台的一些详细信息。在Linux上,第一条指令位于_start,因此您需要break *_start