C++的GDB: 采用g++ -g可单步执行代码。 为何一些产品级开源软件的debug版不能单步执行代码。
发布网友
发布时间:2022-05-07 11:37
我来回答
共2个回答
热心网友
时间:2023-10-29 17:33
这个跟开不开源关系不大,有些问题不是能够通过单步调试解决掉的,例如异步问题和网络模型等等。是否使用-g和程序本身的特性相关。
不用去看去看全部的makefile啊,你只需要看看那些CFLAG之类的东西就可以了,如果你的产品是automake的看一下make.m4,如你所说,可能使用了-O的优化,也有可能你跟进的是一个多线程的部分,线程上下问切换了。
呵呵,我还真是不调清楚其他方法,要是找到了,别忘了也告诉我一下,增长一下知识。
热心网友
时间:2023-10-29 17:33
能否单步并不一定是调试信息的问题
这要看调试方式
调试方式有两种.. 源代码级调试也就是你说的方式.. 源码级调试也就是无源代码的调试方式
无论有无调试文件 源码级调试都是可以进行的 即使现在最好的反调试工具和技术也无法阻止
所以 有时间还是看看调试的基础内容吧...
debug版本未必是提供了源代码信息的调试版本
他有可能是未经调试器进行代码优化的版本
热心网友
时间:2023-10-29 17:33
这个跟开不开源关系不大,有些问题不是能够通过单步调试解决掉的,例如异步问题和网络模型等等。是否使用-g和程序本身的特性相关。
不用去看去看全部的makefile啊,你只需要看看那些CFLAG之类的东西就可以了,如果你的产品是automake的看一下make.m4,如你所说,可能使用了-O的优化,也有可能你跟进的是一个多线程的部分,线程上下问切换了。
呵呵,我还真是不调清楚其他方法,要是找到了,别忘了也告诉我一下,增长一下知识。
热心网友
时间:2023-10-29 17:33
能否单步并不一定是调试信息的问题
这要看调试方式
调试方式有两种.. 源代码级调试也就是你说的方式.. 源码级调试也就是无源代码的调试方式
无论有无调试文件 源码级调试都是可以进行的 即使现在最好的反调试工具和技术也无法阻止
所以 有时间还是看看调试的基础内容吧...
debug版本未必是提供了源代码信息的调试版本
他有可能是未经调试器进行代码优化的版本
热心网友
时间:2023-10-29 17:33
这个跟开不开源关系不大,有些问题不是能够通过单步调试解决掉的,例如异步问题和网络模型等等。是否使用-g和程序本身的特性相关。
不用去看去看全部的makefile啊,你只需要看看那些CFLAG之类的东西就可以了,如果你的产品是automake的看一下make.m4,如你所说,可能使用了-O的优化,也有可能你跟进的是一个多线程的部分,线程上下问切换了。
呵呵,我还真是不调清楚其他方法,要是找到了,别忘了也告诉我一下,增长一下知识。
热心网友
时间:2023-10-29 17:33
能否单步并不一定是调试信息的问题
这要看调试方式
调试方式有两种.. 源代码级调试也就是你说的方式.. 源码级调试也就是无源代码的调试方式
无论有无调试文件 源码级调试都是可以进行的 即使现在最好的反调试工具和技术也无法阻止
所以 有时间还是看看调试的基础内容吧...
debug版本未必是提供了源代码信息的调试版本
他有可能是未经调试器进行代码优化的版本