我有一个程序:
#include <stdio.h>
int main()
{
char *str = "Hello World";
printf("foo\n");
printf("bar\n");
printf("%s\n", str);
return 0;
}
如果传递给printf的参数以值&#34; bar&#34;?
开始,如何在gdb中设置断点以停止程序PS。程序编译时没有调试符号:
$ gcc prog.c
答案 0 :(得分:0)
这是一个链接,讨论在条件上设置断点: http://www.delorie.com/gnu/docs/gdb/gdb_34.html#SEC34
答案 1 :(得分:0)
如果你没有调试符号,我认为你需要做一些非常低级的事情,比如
(gdb) break printf if (*(char *)$rdi == 'b' && *(char *)(1+$rdi) == 'a' && *(char *)(2+$rdi) == 'r' )
或
(gdb) break printf if (((char *)$rdi)[0] == 'b' && ((char *)$rdi)[1] == 'a' && ((char *)$rdi)[2] == 'r' )
请注意,某些系统会将printf("bar\n")
更改为对puts("bar\n")
的调用。