如果函数参数具有特定值,则中断

时间:2014-08-11 20:09:36

标签: c gdb

我有一个程序:

#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

2 个答案:

答案 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")的调用。