免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3158 | 回复: 0
打印 上一主题 下一主题

[C] gdb的next总是显示源文件物理的下一行而不是执行逻辑的下一行? [复制链接]

论坛徽章:
2
嗜杀者
日期:2015-11-25 10:44:3015-16赛季CBA联赛之北京
日期:2016-03-20 19:50:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2018-02-05 19:44 |只看该作者 |倒序浏览
  1. if(c == 0) {
  2.     printf("c == 0\n");
  3. } else {
  4.     printf("c != 0\n");
  5. }
复制代码
如上代码,一般情况下,用gdb时,next命令到 if 这一句,gdb会根据 c的值 来决定显示逻辑上的下一行代码。例如 c等于2,则显示 printf("c != 0\n");
但是现在楼主遇到一个问题,不论什么情况,gdb恒定显示源代码文件里,当前语句的下一句(物理上的下一行,不是逻辑上的):例如执行到 if 这一句同时 c等于2,则显示 printf("c == 0\n"). 如果物理上的下一句是注释、空行,它也直接显示注释、空行。
这就导致gdb显示的下一句和实际执行的经常不一致,看得我都要崩溃了。

不仅仅是 if-else, 所有跳转分支语句都是那样。
不知道各位朋友是否遇到过类似问题,或者知道该如何解决呢?

看了下 ~/.gdbinit 并没有啥可疑的地方,不知道是不是哪里用法不对?
编写一个hello world级的简单C程序,相同环境用gdb单步调试倒是正常的,现有项目(较复杂的工程实现)gdb就不行。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP