20180512重大BUG关于gdb
mingw吧
全部回复
仅看楼主
level 13
被这个bug折磨了有些时间了.估计没什么人用的,所以连个反馈的都没有~
今天研究数个版本的mingw64和一些发行版的mingw,以及tdm-mingw
官方的posix-sjlj版的带的gdb有很多不爽,最糟糕的就是输错命令会死机~
以及一些命令会死机.我在dgn版和distro mingw两个流行的发行版也发现了这一现象,而这两个版本分别用的是win32 seh和posix seh.太尴尬了
目前发现的官方posix seh版本自带的(通常就是这个版本编译的)gdb使用正常.
2018年05月02日 11点05分 1
level 13
只要在posix-sjlj版的mingw64(就是吧里集成包目前用的,请注意标题日期)目录下建立一个gdb目录,然后把seh版的gdb.exe gdbserver.exe libstdc++-6.dll gdborig.exe libgcc_s_seh-1.dll libwinpthread-1.dll 这六个文件copy进去,就可以正常调用这个gdb.
我还要再观察几天.
对官方这个bug表示无所谓,我正好一直想转到纯64位的seh版上去.
也许因为这次原因就正好转过去了.
2018年05月02日 11点05分 2
level 13
既然说到了gdb就说说我常用的单步调试
首先gdb filename.exe加载程序
1.然后在gdb$提示符输入命令start运行到主函数第一句
2.命令s单步调试开始,以后只要回车就是重复当前命令s
3.当运行到你要看变量的地方,比如有变量int i;
你可以用命令p i显示这个变量,你也可以在这里用命令display i(可以每步查看i变量的变化)
4.然后继续用s命令前进直到结束.
5.中途任何时候可以用ctrl+d退出,也可以用r命令直接运行程序到结束
以上一,二两步如果程序较长要配合下断点运行~通常初学C的用上面就够用了
懂点汇编的可以用命令disassemble /m main显示程序的汇编代码.对比较程序不用实现方法时的效率很有参考价值.
更多gdb命令可以百度~
2018年05月02日 12点05分 3
原来这样用的,那么输错啥命令时会死机呢?
2018年05月03日 03点05分
@数码盟军 说错了。。只是gdb程序卡死,重启gdb就行
2018年05月03日 04点05分
@_A_R_D_ 这里是简单用法。详细百废gdb教程。集成包内conemu命令行你应该先用过吧
2018年12月12日 23点12分
level 10
[黑线]
2018年05月03日 01点05分 4
level 1
20180512穿越了
gdb 命令 l ---> b 18 -> r --> i locals
这样调试 简洁点
2018年05月05日 10点05分 5
[哈哈]这是魂穿
2018年05月05日 11点05分
回复 牵星上人✨ :一会儿在gdbinit里定义个命令:bpr num直接运行到断点并执行i locals.这样蛮不错的[哈哈]
2018年05月05日 11点05分
实验成功.也许应该叫bri?得想个好名字
2018年05月05日 11点05分
1