GDB No symbol "XXXXX" in current context

这几天在把windows下的工程移植到centOS下的时候,发现gcc编译不过,有三点原因:

1、gcc相比VS,对C++标准的遵循更为严格,有些不符合标准的写法在VS下能过,但在gcc下则报错。比如:在头文件中声明类A的成员函数时,gcc下不能带有A::,又如初始化fstream时,gcc下第一个参数必须是const char *,而不能是string等等;

2、由于centOS已有的gcc4.4.7版本太低,一些C++11中的用法不支持;

3、同样由于gcc版本太低,几个开源的项目的静态库无法编译。

第1、2两点还好解决,但对于第三点总不能大改人家的开源项目,所以更新gcc到4.8.1,编译通过,生成了可执行文件。但坑爹的事情发生了,用gdb调试的时候,总是报错No symbol "XXXXX" in current context。

反复检查cmake里面设置了-g选项,说明gcc编译后产生了符号表,但为什么gdb总说找不到符号呢。百度、csdn没有一个答案有用,最后在stackoverflow上找到了原因:gcc升级后,gdb没有升级,新版本gcc产生的符号表低版本的gdb不认识,所以找不到符号。

解决方法有两个:

1、更新gdb;

2、GCC-4.8 defaults to using dwarf4 (gcc.gnu.org/gcc-4.8/changes.html), but  GDB is too old to understand that. Build with
-gdwarf-2, it will work!

也就是编译时将-g改为-gdwarf-2

参考:http://stackoverflow.com/questions/18407563/gcc-doesnt-produce-line-number-information-even-with-g-option

时间: 2024-12-19 11:21:51

GDB No symbol "XXXXX" in current context的相关文章

call to OpenGL ES API with no current context 和Fatal signal 11

近日在用cocos2dx3.4的时候使用了JNI调用,发现一个现象 当不使用jni的时候完全正常,使用了jni后回去的所有文字都变成黑块,并且有概率程序崩溃,附带出了两个log call to OpenGL ES API with no current context  和 Fatal signal 11 但同样的cocos2dx ,同样的jni代码,另一个项目却正常.找寻了好久之后发现了原因 cocos2dx 3.x以后版本 不再是一个进程跑到底: 引用:"Cocos2d-x从2.x版本到上周

vs 编译错误 The name 'InitializeComponent' does not exist in the current context in WPF application

1:文件命名空间的问题 xaml文件和model.cs文件的命名空间 2:csproj 那么它究竟是给谁用的呢?那是给开发工具用的,例如我们在熟悉不过的Visual Studio,以及大家可以没有接触过,但是应该都听说过的MSBuild.exe.Visual Studio会根据csproj里的XML定义来管理项目文件以及相关其他一些种类非常丰富的数据及操作,MSBuild也会根据csproj文件来得知编译这个项目需要有哪些依赖,默认输出路径,Pre-Build和Post-Build需要哪些操作等

The name ‘InitialzeComponent’ does not exist in the current context

在Visual Studio中创建Windows Store项目,在MainPage.xaml.cs中出现错误: The name 'InitialzeComponent' does not exist in the current context 这个问题的出现通常会有两个方面的原因: 最常见的是MainPage.xaml中的x:Class与类名不一致.确认x:Class是正确的类和命名空间. 另一种情况就是,MainPage.xaml的Build Action没有设置为'Page'. 删掉o

gdb 调试中No symbol “***” in current context解决方法

主要是因为GCC/G++版本和GDB不匹配造成的,网上也有说是因为O2优化问题,具体啥原因需要自己尝试一下. 解决: 放狗搜索,解决办法是在编译是加-gdwarf-3即可,出现这样的原因是gcc,gdb的版本不匹配造成的. 参考: https://blog.csdn.net/u013573789/article/details/45564289 https://blog.csdn.net/u014517002/article/details/49850105 原文地址:https://www.c

The entity type <type> is not part of the model for the current context

这是在网站里遇到的一个错误,自动生成的不能手动添加, reference: http://stackoverflow.com/questions/19695545/the-entity-type-xxx-is-not-part-of-the-model-for-the-current-context When I created a strong view using the Quickfix context it blew up, because it was trying to associ

OpenGL ES API with no current context

这个问题是因为Android在启动cocos2d-x的Thread时,没有用context的主的Thread,而是使用的OpenGL的Thread,所以我们不能在主Thread去完成 本应该是在cocos2dx中OpenGL Thread中 完成的工作(即所调用的函数在Cocos2dx中做的工作), 必须使用OpenGL的Thread去完成︰ public static native void nativeCallback(String code, String params); //原本程序中

Linux GDB程序调试工具使用简介

GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能.所谓"寸有所长,尺有所短"就是这个道理. 一般来说,GDB主要帮忙你完成下面四个方面的功能: 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序. 可让被调试的程序在你所指定的调置的断点处停住.(断点可以是条件表达式) 当程序被停住时,

使用gdb调试Python进程

http://www.cnblogs.com/dkblog/category/287362.html https://wiki.python.org/moin/DebuggingWithGdb There are types of bugs that are difficult to debug from within Python: segfaults (not uncaught Python exceptions) hung processes (in cases where you can

gdb对应vc调试命令

gdb vc调试对照表: 实现功能                vc                   gdb 修改后编译              f7                   make 跳出函数(step out)    shift+f11            finish,f 重新启动                ctrl+shift+f5        run,r 运行到指定行            f9+f5                tbreak,tb + c