我正在尝试学习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
的任何方式吗?
答案 0 :(得分:0)
如果使用调试模式进行编译(在gcc上,这是-g),则可以在gdb的执行行设置断点。进入gdb后,输入命令break x
,其中x是行号。如果您的变量在范围内或在范围内,您可以在check_password()之后中断。或者,如果您之前休息,您可以逐行逐步执行代码。
答案 1 :(得分:0)
disassemble 0x080486bc
成功了!
我接到了fgets的电话并在它之后放了一个断点。
但是,请为“破解”这个简单的字符串算法做出贡献:)