Program terminated with signal 11, Segmentation fault.

今天写程序遇到一个问题:Program terminated with signal 11, Segmentation fault.

gdb 调试现象如下:

warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7fff1b1fc000

Core was generated by `./test‘.

#0  0x0000003b5e6b76d2 in __gnu_cxx::__exchange_and_add(int volatile*, int) () from /usr/lib64/libstdc++.so.6

(gdb) bt

#0  0x0000003b5e6b76d2 in __gnu_cxx::__exchange_and_add(int volatile*, int) () from /usr/lib64/libstdc++.so.6

#1  0x0000003b5e69dbb9 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() () from /usr/lib64/libstdc++.so.6

#2  0x00000000004124ab in testing::TestInfo::~TestInfo() ()

#3  0x0000000000412534 in void testing::internal::Delete<testing::TestInfo>(testing::TestInfo*) ()

#4  0x000000000042b522 in void (*std::for_each<__gnu_cxx::__normal_iterator<testing::TestInfo* const*, std::vector<testing::TestInfo*, std::allocator<testing::TestInfo*> > >, void (*)(testing::TestInfo*)>(__gnu_cxx::__normal_iterator<testing::TestInfo* const*,
std::vector<testing::TestInfo*, std::allocator<testing::TestInfo*> > >, __gnu_cxx::__normal_iterator<testing::TestInfo* const*, std::vector<testing::TestInfo*, std::allocator<testing::TestInfo*> > >, void (*)(testing::TestInfo*)))(testing::TestInfo*) ()

#5  0x000000000042b577 in void testing::internal::ForEach<std::vector<testing::TestInfo*, std::allocator<testing::TestInfo*> >, void (*)(testing::TestInfo*)>(std::vector<testing::TestInfo*, std::allocator<testing::TestInfo*> > const&, void (*)(testing::TestInfo*))
()

#6  0x0000000000411fc3 in testing::TestCase::~TestCase() ()

#7  0x000000000040e997 in void testing::internal::Delete<testing::TestCase>(testing::TestCase*) ()

#8  0x000000000042a486 in void (*std::for_each<__gnu_cxx::__normal_iterator<testing::TestCase* const*, std::vector<testing::TestCase*, std::allocator<testing::TestCase*> > >, void (*)(testing::TestCase*)>(__gnu_cxx::__normal_iterator<testing::TestCase* const*,
std::vector<testing::TestCase*, std::allocator<testing::TestCase*> > >, __gnu_cxx::__normal_iterator<testing::TestCase* const*, std::vector<testing::TestCase*, std::allocator<testing::TestCase*> > >, void (*)(testing::TestCase*)))(testing::TestCase*) ()

#9  0x000000000042ac49 in void testing::internal::ForEach<std::vector<testing::TestCase*, std::allocator<testing::TestCase*> >, void (*)(testing::TestCase*)>(std::vector<testing::TestCase*, std::allocator<testing::TestCase*> > const&, void (*)(testing::TestCase*))
()

#10 0x000000000041a26f in testing::internal::UnitTestImpl::~UnitTestImpl() ()

#11 0x0000000000411df6 in testing::UnitTest::~UnitTest() ()

#12 0x0000000000411e66 in __tcf_0 ()

#13 0x000000340fa334f5 in exit () from /lib64/libc.so.6

#14 0x000000340fa1d99b in __libc_start_main () from /lib64/libc.so.6

#15 0x0000000000405699 in _start ()

通过代码接口开关的方法,定位到程序中

mock_config->parser_name_tag = "ssp_creative.so";

是这条代码的问题

改为:

std::string parser_name_tag ="ssp_creative.so";

mock_config->parser_name_tag = parser_name_tag.c_str();

段错误问题解决。

先把现象记录下,具体原因后续分析。

时间: 2024-10-18 18:37:53

Program terminated with signal 11, Segmentation fault.的相关文章

Command terminated by signal 11

Command terminated by signal 11可能的情况之一是数组越界,你在访问不被允许的内存空间. Command terminated by signal 11

stl::map的insert插入数据报错:(Suspended : Signal : SIGSEGV:Segmentation fault)

最近接手一个老项目,在老项目中使用了map存储缓存数据,如下: #include "conf.h" int Frame::parse() { std::map<string, int64_t> tmpString; tmpString.insert(std::map<string, int64_t>::value_type(string("0000"), 12123323)); tmpString.insert(std::map<str

linux Ubuntu(Segmentation fault)段错误出现原因及调试方法

  在linux下编译了一个程序,尝试运行的时候出现: Segmentation fault (core dumped) 初步确认为...完全不知道是什么玩意. 于是找度娘了. ---------------------------------------------------------------------------- 出现原因 原来这个东西叫做段错误,就程序运行的时候出现内存错误.有很多原因会导致这样的内存错误,但是应该把这些问题归结于程序的错误,那么程序是出现了什么样的错误了呢,为

Linux 下的段错误(Segmentation fault)调试方法

我们在用C/C++语言写程序的时侯,内存管理的绝大部分工作都是需要我们来做的.实际上,内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难免会在此处犯些小错误,而通常这些错误又是那么的浅显而易于消除.但是手工“除虫”(debug),往往是效率低下且让人厌烦的,本文将就"段错误"这个内存访问越界的错误谈谈如何快速定位这些"段错误"的语句. 下面将就以下的一个存在段错误的程序介绍几种调试方法: 1 dummy_function (void) 2 { 3 unsig

再谈Segmentation fault (core dumped)问题 -查找段错误原因

再谈Segmentation fault (core dumped)问题 -查找段错误原因    在前一篇文章"Segmentation fault (core dumped) "有说了具体core dumped产生的原因. 下面主要来介绍下问题的解决与查找,在linux下一般都使用gdb进行调试,那今天我就以Ubuntu 14.04环境作为介绍 来查找正在的core dumped的原因.需要说明的是,你在编译程序的时候要加调试选项 -g. $ gcc -o app reverse.c

C&amp;C++——段错误(Segmentation fault)

C/C++中的段错误(Segmentation fault) Segment fault 之所以能够流行于世,是与Glibc库中基本所有的函数都默认型参指针为非空有着密切关系的.来自:http://oss.lzu.edu.cn/blog/article.php?uid_7/tid_700.html#comment 背景 最近一段时间在linux下用C做一些学习和开发,但是由于经验不足,问题多多.而段错误就是让我非常头痛的一个问题.不过,目前写一个一千行左右的代码,也很少出现段错误,或者是即使出现

结构体指针之 段错误 具体解释(segmentation fault)

一个网友问了我一个问题.一个C程序执行出现了段错误,这个问题非常好.非常多刚開始学习的人都easy犯这个错误,详细代码例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 这个编译没有问题,可是执行是段错误    Segmentation fault 由于你定义了一个结构体指针p.用来指向此类

关于Segmentation fault错误

今天写程序时候出现了Segmentation fault,在网上查了一些资料,基本上的原因是,非法的内存访问. 例如数组的越界,在循环操作时循环变量的控制问题,也有字符串拷贝时长度溢出,指针指向了非法的空间,还有就是申明一个指针,但却没有对其初始化,就直接引用,或者没有开辟内存空间就释放内存,下面是自己找的一些可能情况,当做提醒自己吧. 1.内存访问越界 a) 由于使用错误的下标,导致数组访问越界. b) 搜索字符串时,依靠字符串结束符来判断字符串是否结束,但是字符串没有正常的使用结束符. c)

Debugging Segmentation Fault

We are going to use gdb to figure out why the following program causes a segmentation fault. The program is meant to read in a line of text from the user and print it. However, we will see that in it's current state it doesn't work as expected... 1 :