输入后gdb中断

时间:2014-09-26 02:54:42

标签: debugging gdb

我正在尝试学习gdb。我写了一个简单的程序,只需通过fgets听取输入,并将其与密码进行比较。

如何使用gdb暂停程序并查看comparisson?

如果我在输入期间用ctrl+c停止执行,我得到:

   #7  0xf7e771ea in _IO_fgets (buf=0xffffd7f0 "T\332\377", <incomplete sequence \367>, n=256, fp=0xf7fa9440) at iofgets.c:58
   #8  0x080486bc in check_password ()
   #9  0x08048949 in main ()

有什么办法可以显示check_password的代码清单吗?如果我试着list它会告诉我fgets&#39; ...

我可以走出fgets的任何方式吗?

你会从这里做什么?

2 个答案:

答案 0 :(得分:0)

如果使用调试模式进行编译(在gcc上,这是-g),则可以在gdb的执行行设置断点。进入gdb后,输入命令break x,其中x是行号。如果您的变量在范围内或在范围内,您可以在check_password()之后中断。或者,如果您之前休息,您可以逐行逐步执行代码。

答案 1 :(得分:0)

disassemble 0x080486bc成功了!

我接到了fgets的电话并在它之后放了一个断点。

但是,请为“破解”这个简单的字符串算法做出贡献:)