C++ cmath库导致C++;

C++ cmath库导致C++;,c++,debugging,segmentation-fault,cmath,C++,Debugging,Segmentation Fault,Cmath,免责声明:我不是专家或专业人士,只是在自学。因此,我试图解决这一问题的努力充其量只是初步的 在C++中,每当我尝试使用 库编译程序时,编译将完成,但是当程序尝试执行时,我会得到运行时错误。弹出一个Windows对话框,说明程序已停止工作,正在搜索解决方案。我想我不会只是问你们,我会试着学一点,然后先尽我最大的努力。所以我加载了GDB,并尝试用它来运行程序,以便对正在发生的事情有更多的了解 当运行包含库的程序时,GDB立即输出以下内容(无论我将断点放在何处): 如果我将断点放在main上,它将在此

免责声明:我不是专家或专业人士,只是在自学。因此,我试图解决这一问题的努力充其量只是初步的

在C++中,每当我尝试使用<代码> <代码>库编译程序时,编译将完成,但是当程序尝试执行时,我会得到运行时错误。弹出一个Windows对话框,说明程序已停止工作,正在搜索解决方案。我想我不会只是问你们,我会试着学一点,然后先尽我最大的努力。所以我加载了GDB,并尝试用它来运行程序,以便对正在发生的事情有更多的了解

当运行包含
库的程序时,GDB立即输出以下内容(无论我将断点放在何处):

如果我将断点放在
main
上,它将在此处停止。如果我允许它在没有断点的情况下运行,或者指示GDB移动到下一步,我会收到:

Program received signal SIGSEGV, Segmentation fault.
0x6fc85cd1 in libstdc++-6!_ZNSo9_M_insertIdEERSot_ ()
    from C:\Users\Me\Desktop\libstdc++-6.dll
从我所能收集到的信息来看,出于某种原因,我的系统在加载
库时出现问题,但我仍然不确定原因。前三个警告看起来像是与电子邮件进程相关的文件,但这对我来说意义不大(但我也不太清楚)。这就是我被困的地方

仅供参考:我正在运行Windows7企业版,使用MinGW和G++作为我的编译器

编辑:我尝试使用-g启用调试符号来编译程序。执行此操作时,回溯将减少到仅为#0、#1和#2(原始回溯请参见下面的注释),其中#2附加了`at C:\Users\me\desktop\file.cpp:19。指示第19行,这是该方法之前的最后一步。这种情况会在更简单的程序中重复,其中指示的行是调用方法之前的最后一步

是否有可能存在版本问题,与此类似?我使用的是gcc版本4.8.1

编辑:根据@pm100的请求。 代码:


当您在gdb中点击SIGSEGV时,键入
bt
以获得回溯跟踪-这将告诉您在程序中调用数学库的位置,这可能足以让您找到错误。@PaulR感谢您的提示。我以前试过这个,但不幸的是我真的不知道如何阅读这个输出。我得到的结果如下:
#0 0x6fc842f4在libstdc++-6中_ZNSi6sentryC1ERSib()来自C:\Users\Me\Desktop\libstdc++-6.dll#1 0x6fc84dcf,在libstdc++-6中_ZNSirsERi()来自C:\Users\Me\Desktop\libstdc++-6.dll#2 0x00401462 in#fu3#uuuu ZSt3cin()#3 0x0028ff14 in??(#4 0x00401250在#明#CRTStartup()中#5 0x004012b5在mainCRTStartup()中
是否可能错误在#3中??()或者是与#0步骤一起重复分段错误。好吧-它看起来在运行时代码中崩溃了,甚至在它到达main()之前,所以它可能不是代码中的错误。当你添加数学库时,即使使用一个简单的“hello world”程序也会发生这种情况吗?@PaulR No.它与“hello world”一起工作,但每当我从中添加任何方法时,它就会崩溃。我的直觉告诉我,我的机器上的g++设置有问题,但我真的不知道。发布最小可能的失败代码以及用于编译和链接的命令
Program received signal SIGSEGV, Segmentation fault.
0x6fc85cd1 in libstdc++-6!_ZNSo9_M_insertIdEERSot_ ()
    from C:\Users\Me\Desktop\libstdc++-6.dll
#include <cmath>
#include <iostream>
using namespace std;

int main() {
  cout << floor(2.3);
}
NPP_SAVE
CD $(CURRENT_DIRECTORY)
C:\mingw\bin\g++ "$(FULL_CURRENT_PATH)" -o "$(NAME_PART).exe" -g
cmd /c $(NAME_PART).exe