在解释我的问题之前:
我的操作系统是Ubuntu 12.04 LTS 32位,4GB RAM
我的IDE是Code :: Blocks 12.11(我和10.05有同样的问题)
我正在使用带有-g标志的GNU GCC编译器和-std = c ++ 0x标志。
尝试调试此程序时:
using namespace std;
#include<iostream>
int main(){
int n=10;
for(int i=1;i<=n;i++){
int ax=i;
while(ax) ax--;
cout<<i;
}
return 0;
}
如果我尝试“运行到光标”命令或尝试使用断点,我无法发生任何事情。他们只是被跳过,我的程序完成运行。
这是我在调试器日志中得到的:
建立以确保来源是最新的
选择目标:
发布
添加源目录:/ home / classius / CodeBlocks / Dr /
添加源目录:/ home / classius / CodeBlocks / Dr /
添加文件:/ home / classius / CodeBlocks / Dr / bin / Release / Dr
将目录更改为:/ home / classius / CodeBlocks / Dr /。
设置变量:LD_LIBRARY_PATH =。:
启动调试器:/ usr / bin / gdb -nx -fullname -quiet -args / home / classius / CodeBlocks / Dr / bin / Release / Dr
做过
注册新类型:wxString
注册的新类型:STL String
注册新类型:STL矢量
设置断点
从/home/classius/CodeBlocks/Dr/bin/Release/Dr...(找不到调试符号)读取符号...完成。
调试器名称和版本:GNU gdb(Ubuntu / Linaro 7.4-2012.04-0ubuntu2.1)7.4-2012.04
没有加载符号表。使用“file”命令
临时断点2(“/ home /classius/CodeBlocks/Dr/main.cpp:10”)待定。
[劣质1(过程13381)正常退出]
调试器以状态0
如果有人想提出一个暗示使用终端的解决方案,请使用您可以找到的最无聊的条款进行操作!
PS:如何在提问时在堆栈溢出上添加分隔线?(已解决 - 谢谢!)
答案 0 :(得分:0)
从/home/classius/CodeBlocks/Dr/bin/Release/Dr...(no 发现调试符号)......完成。
这意味着您在编译期间没有-g选项。
更新:
file /home/classius/CodeBlocks/Dr/bin/Release/Dr
/home/classius/CodeBlocks/Dr/bin/Release/Dr: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x7da8c5cff4af5082d82eecc3ede59a5920b253a0, stripped
所以它被'剥离',这意味着没有真正使用-g选项。您可以重新检查编译器配置或尝试构建调试版本?
答案 1 :(得分:0)
在设置菜单中,选择调试器,然后选择gdb-cdb标签,然后重置为默认值