草庐IT

MinGW-gdb

全部标签

c++ - 如何使用 MinGW 将符号正确导出到 Windows DLL 中?

我正在尝试使用MinGW创建一个具有一个公开函数的C++库。我想我已经读够了tutorials,环顾互联网,但似乎没有任何效果,错误总是一样的。未定义的函数引用。这是库的头文件(findPoints.h):#ifndefFIND_POINTS_H#defineFIND_POINTS_H#ifdefBUILDING_FIND_POINTS_DLL#defineFIND_POINTS_DLL_PREFIX__declspec(dllexport)#else#defineFIND_POINTS_DLL_PREFIX__declspec(dllimport)#endif#ifdef__cplu

c++ - MinGW GCC 在没有警告或错误的情况下编译错误代码

你能给我解释一下为什么MingWGCC在这段代码中不产生警告吗:intmain(){intnum;intpeople[num];cout>num;}但是在这里,我只用num=1替换了最后一条语句,现在有一个警告...intmain(){intnum;intpeople[num];//warning:'numisuseduninitialized..'cout 最佳答案 我认为因为您只使用了第一个元素,所以它优化了第一个示例中的num。它只是创建一个单元素数组。在第二种情况下,因为你实际使用了num,所以它给出了错误

c++ - mingw 的 C++ 异常的奇怪问题

我在使用mingw时遇到了异常的奇怪问题,并设法将其缩减为以下示例:#include#include#includeusingnamespacestd;voidtest(inta){if(athrowingexception"第一个异常被捕获,但第二个没有,所以我得到了漂亮的Windows错误框,通知我我的应用程序已停止工作:-(完整的命令行输出是:Exceptioncaught:afileerror->throwingexceptionThisapplicationhasrequestedtheRuntimetoterminateitinanunusualway.Pleasecont

c++ - _Unwind_resume的Mingw多重定义

我知道有人问过与此类似的问题,但我几个小时都无法解决这个问题。基本上我有一个包含代码的DLL和一个调用它的应用程序。一切正常,但如果我将这两个带出我的开发环境,它会说程序无法启动,因为计算机中缺少libgcc_s_dw21.dll。考虑到它不是开发计算机,这很公平。因此,为了分发,我添加了编译器标志“-static-libgcc-static-libstdc++”。我为dll和应用程序做了这个。但是当我编译应用程序时出现错误:"multipledefinitionof`_Unwind_Resume'"我认为这是由于dll和应用程序都内置了静态库,事实确实如此。但是,如果它们都没有内置静

c++ - GDB 中用于 C++ 模板(moSTLy boost)的代码更清晰、更漂亮的堆栈跟踪

我开发的金融应用程序(Linux/C++/gcc)广泛使用了boost和模板。通过GDB调试时生成的堆栈跟踪非常复杂,boost的内部模板连接在输出中添加了很多丑陋的噪音。有谁知道为C++模板繁重(尤其是boost-heavy)代码获得更清晰、更漂亮和更有洞察力的堆栈跟踪的方法吗? 最佳答案 较新版本的GDB中的Python支持已用于为STL等模板密集型结构提供pretty-print。http://sourceware.org/gdb/wiki/PythonGdbTutorialhttp://sourceware.org/gdb/

c++ - GDB 的奇怪行为

我一直在尝试调试一个小东西,并且在尝试这样做时差点发疯。经过几个小时的解决问题,我终于有了一段代码,它是我问题的根源:#include#include#includeusingnamespacestd;intmain(){std::vectorfoo=std::vector();foo.push_back(0);foo.push_back(11);foo.push_back(222);foo.push_back(3333);std::stackbar=std::stack();cout编译后,使用:g++-std=c++11-ggdb-O0-pedantic-Wall-Wextra-W

c++ - VS c++ 和 MinGW 实现 double 类型有什么区别

同样的代码在VSc++和MinGW中运行得到不同的结果。结果是double类型。示例:在VSC++中得到“-6.397745731873350”,但在MinGW中得到“-6.397745731873378”。有垃圾不同。但我不知道为什么? 最佳答案 我敢猜测这是两种可能性之一。当WindowsNT是新的,并且它们支持移植到其他处理器(例如MIPS和DECAlpha)时,MS有一点问题:处理器都有64位浮点类型,但它们有时会生成结果略有不同。DECAlpha对64位double作为64位double进行了计算。x86上的默认模式有点不

c++ - 使用制表符完成打印变量时 gdb 卡住

我编译的c++项目,不算大,大约6M二进制。当我调试它并想要打印一些变量时,我输入前两个字符并按Tab键完成。然后gdb读取符号永远卡住。我怎么解决这个问题。谢谢! 最佳答案 ItypethefirsttwocharactersandpresstheTabtocomplete.Thenthegdbreadsymbolsforeverfreezing.HowcanIsolvethisproblem医生,我这样做的时候很疼。好吧,别那样做。说真的,如果你有一个非常大的二进制文件(不清楚你的6MB是否是有调试信息的大小),以及很多变量,那

c++ - 访问 gdb 在 C++ 中看到的程序信息

我有一个用C++编写的程序,在Linux上用-g编译。当我在gdb下运行时,我可以1)setbreakpoints2)atthosebreakpoints,printoutvariables3)seethestackframe4)givenavariablethat'sastructure,printoutpartsofthestructure(i.e.howddddisplaysinformation).现在,考虑到我的程序是用“-g”编译的——我是否可以在我的程序本身中使用这种功能?即鉴于我的程序是用“-g”编译的,是否有一些std::vectorgetStackFrame();我

使用 gdb 的 C++ 特定调试技巧

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。您最喜欢使用gdb调试C++程序的一些技巧是什么?对所有技巧都感兴趣,但也如何从gdb中调用对象的方法(可能是虚拟的)检查STL对象(漂亮地打印它们)防止gdb使用continue进入STL代码处理内联、线程、tcmalloc(或自定义分配器)跨不同session保留gdb命令的历史记录