
gdb
wwwsq
这个作者很懒,什么都没留下…
展开
-
[C++] gdb高级调试方法
1,启动gdb的时候自动执行脚本gdb -x your_script注意:your_script里面只能有gdb命令。不过我们都知道gdb命令里面有个shell指令,所以实际上这里可以做任何事。2,调试运行中的进程在gdb里面有个attach指令,可以调试运行中的进程。结合上面的-x参数,实际上我们可以写一个脚本,自动的attach到我们关心的进程上面,然后自动的做很多事情:比如设置trace命令原创 2011-12-20 01:41:50 · 7555 阅读 · 3 评论 -
[C++] 内存保护
C++有内存保护吗,真的有:http://en.wikipedia.org/wiki/Buffer_overflow_protection这个只能保护stack上的buffer,不过已经很有作用了。写越界写坏callstack的概率低了很多。提醒:如果callstack没有效信息,更有可能是环境版本不匹配。真正写坏callstack这种事情很罕见的。另外,用ldd命令可以看两台机器的环境是否一致,原创 2011-12-13 14:34:06 · 2578 阅读 · 0 评论 -
[C++] 关于gdb断点的真相
gdb的断点是基于信号(signal)实现的在某个地址增加一个断点,实际上就是修改那个地址的代码,把原来的代码替换成INT 3指令,同时让gdb捕获这个signal并做相应的处理:包括执行被替换掉的指令,并跳转回来。因此,只要断点不被走到,那么断点就不会影响程序的运行效率;因为程序的其他地方都没改变,该怎么运行还是怎么运行。gdb在遇到断点之后可以做很多事情包括:停下来等用户处理自动继续自动执行一原创 2011-12-29 11:22:46 · 4338 阅读 · 0 评论