【问题标题】:code::blocks debugger, "Cannot find the bounds of current function"code::blocks 调试器,“找不到当前函数的边界”
【发布时间】:2015-01-07 06:19:18
【问题描述】:

我想在 code::blocks 中调试一个简单的 c++ 程序。 “运行到光标”有效,但不能“进入”或“下一行”,这些会给出消息“找不到当前功能的边界”。我做了什么:

  • -g 编译选项勾选,-s 不勾选
  • 刚刚安装的最新版 code::blocks
  • 为 GDB 设置了正确的可执行路径

我的设置:

  • Windows 7 64 位
  • 代码::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;
}

在“run to line”命令之后,还写着“in ??()()”,可能值得一提。

那么,我该怎么做才能拥有一个功能调试器?根本问题是什么?

【问题讨论】:

  • '你把断点放在哪里了?
  • 当执行“运行到光标”时,我会将光标放在第三个 printf 处,并在控制台中得到“qweqwe”。但随后的“执行下一行”或“步入”并没有给我更多的“qwe”,而是我写的错误消息。

标签: c++ debugging gcc codeblocks


【解决方案1】:

最终解决问题的是将 code::blocks 编译器可执行文件从“mingw32-g++.exe”更改为简单的“g++.exe”并重建程序。我终于发现了这一点通过学习从命令行使用 gdb 并看到它也存在与 code::blocks 构建的可执行文件相同的问题,但如果我使用 g++ 从命令编译完全相同的源代码则不会。所以,这是唯一的区别,我改变了它并且它起作用了。不知道为什么。

【讨论】:

  • 我在使用 32 位 gcc 和 64 位 GDB 时遇到了这样的问题。对 32 位编译器使用 32 位调试器解决了这个问题。也许你的 mingw32-g++.exe 和 g++.exe 有不同的位数。
  • 您的解决方案对我不起作用 :( 我正在尝试检查 Weisskopf 指出的 32/64 位问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多