当char * x指向一个值为“hello”的string时,如何在gdb中设置条件断点?
我可以指定,当char* x指向值为"hello"的string时,我希望gdb在第x行中断? 如果是的话,怎么样? 
 你可以使用strcmp : 
 break x:20 if strcmp(y, "hello") == 0 
  20是行号, x可以是任何文件名, y可以是任何variables。 
 break x if ((int)strcmp(y, "hello")) == 0 
在一些实现上,gdb可能不知道strcmp的返回types。 这意味着你将不得不施放,否则将永远评估为真!
由于GDB 7.5,你可以使用这些方便的便利function :
 $_memeq(buf1, buf2, length)` $_streq(str1, str2) $_strlen(str) $_regex(str, regex) 
 似乎没有什么问题比在每次命中断点时在进程堆栈上执行一个“外部” strcmp() 。 
注意你的GDB需要用Python支持进行编译,这对当前的Linux发行版来说不是问题。 可以肯定的是,你可以通过在GDB里运行
show configuration并search--with-python来检查它。 这个小小的打线程也是这样的:$ gdb -n -quiet -batch -ex 'show configuration' | grep 'with-python' --with-python=/usr (relocatable)
对于你的演示案例,用法是
 break <where> if $_streq(x, "hello") 
或者,如果你的断点已经存在,你只是想添加条件
 condition <breakpoint number> $_streq(x, "hello") 
  $_streq只匹配整个string,所以如果你想要更狡猾的东西,你应该使用$_regex ,它支持Python的正则expression式语法 。