Code::Blocks调试器,“无法找到当前函数的边界”

4
我希望在code::blocks中调试一个简单的c++程序。“运行到光标”可以工作,但“步入”或“下一行”不行,这会提示“找不到当前函数的边界”。我已经做了以下几点:
  • 启用-g编译选项,未启用-s编译选项
  • 最新版本的code::blocks已安装
  • 设置了GDB的正确可执行文件路径

我的配置:

  • Windows 7 64位操作系统
  • Code::Blocks 13.12
  • GCC编译器

c++代码:

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    printf("qwe");
    printf("qwe");
    printf("qwe");
    printf("qwe");
    printf("qwe");
    return 0;
}

在“运行到行”命令之后,它还会显示“in ?? () ()”,可能值得一提。
那么,我该怎么做才能拥有一个正常工作的调试器?根本问题是什么?

你在哪里设置了断点? - drum
当使用“运行到光标”功能时,我会将光标放在第三个printf处,在控制台中会得到“qweqwe”的输出。但是随后的“执行下一行”或“步入”操作并没有给我更多的“qwe”输出,而是出现了我所写的错误信息。 - Ludwik
1个回答

2
最终解决问题的方法是将 Code::Blocks 编译器可执行文件从 "mingw32-g++.exe" 更改为 "g++.exe",然后重新构建程序。 我最终通过学习如何使用命令行下的 gdb 并发现它也遇到了由 Code::Blocks 构建的可执行文件相同的问题,但如果我使用 g++ 在命令行编译完全相同的源代码,则没有这个问题。因此,这是唯一的区别,我对其进行了更改,然后它就起作用了。不知道为什么,可能是由于某些原因。

当我使用32位gcc和64位GDB时,我遇到了这样的问题。使用32位调试器来配合32位编译器解决了这个问题。也许你的mingw32-g++.exe和g++.exe的位数不同。 - Weisskopf
你的解决方案对我不起作用 :( 我正在尝试检查Weisskopf指出的32/64位问题 - AnotherDeveloper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接