使用GDB调试C程序,list却出现汇编代码,求解释。

发布于 2021-11-14 08:15:48 字数 369 浏览 903 评论 10

我是在Fedora 16上使用C编写了一个程序。涉及了一些终端控制。出现段错误之后看源代码半天没有发现错误,只好借助GDB。但是可以说是第一次使用它,敲了list显示代码,结果却出现汇编代码。很奇怪,假如我没有run的话,就会出现c代码,但run了之后就是汇编代码了。

有图:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

归属感 2021-11-18 01:14:13

代码依次注释。 用#if 0 #endif。或者将main 内全部注释。这样总没错。然后依次释放代码出来,看哪些代码释放出来有错。然后进去分析。正向分析。分析时多加判断检测代码。

伴我心暖 2021-11-18 01:13:37

OK,谢啦,我再仔细看看。嗯……明明把用到数组的地方都删掉了还是这个样子,诶……

甜扑 2021-11-18 01:13:11

除了GDB还有没有好的调试工具?C/C++的测试用的是什么工具?

做个少女永远怀春 2021-11-18 01:12:40

回复
我现在正在自己写这类测试手段的代码呢。把以前的系统的汇总一下。

偏爱自由 2021-11-18 01:10:08

你这个算是小错误啦。段错误基本是指针飞的情况。好查。我不建议用GDB,因为你查到最后发现,GDB给你的那点线索实在可怜,同时你还得看汇编。这是我个人(汇编抓BUG抓退休的)经验总结。

奈何桥上唱咆哮 2021-11-18 01:08:34

咳,我想我没有加入优化选项,应该不会自动加上吧。再说,要是这个样子,要调试器干啥?找不到哪里写错了。

瀞厅☆埖开 2021-11-18 01:00:45

肯定是汇编啊。如果不是汇编,给你C对于经过优化的情况下,你就是定点在某个C语言行,也没有用。

无法言说的痛 2021-11-18 00:49:04

谢谢老鬼哥了,问题已经解决。是几个操作的顺序反了,也可以算指针飞了吧。诶,用那个释放代码的方法找出问题的。辛苦~

能否归途做我良人 2021-11-17 23:48:02

回复
哈。这种方法等你到大系统时,就知道威力了。如果你模块非常清晰下。GDB,基本属于调试汇编用的。

彼岸花ソ最美的依靠 2021-11-17 23:09:18

代码依次注释。 用#if 0 #endif。或者将main 内全部注释。这样总没错。然后依次释放代码出来,看哪些代码释放出来有错。然后进去分析。正向分析。分析时多加判断检测代码。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文