C++ CPP单元SEGFULT-带堆芯转储

C++ CPP单元SEGFULT-带堆芯转储,c++,cppunit,C++,Cppunit,我有一个我执行的单元测试套件,在执行的最后是应用程序段 我已经试着理解这个核心转储有一段时间了,我不知道可能是什么错了,我想如果我把它粘贴在这里,也许有人会遇到这样的问题,并为我指出一个好的方向 Program terminated with signal 11, Segmentation fault. #0 0x000000000100ad8e in CppUnit::XmlOutputter::XmlOutputter (this=0x7fffc180bc00, result=<op

我有一个我执行的单元测试套件,在执行的最后是应用程序段

我已经试着理解这个核心转储有一段时间了,我不知道可能是什么错了,我想如果我把它粘贴在这里,也许有人会遇到这样的问题,并为我指出一个好的方向

Program terminated with signal 11, Segmentation fault.
#0  0x000000000100ad8e in CppUnit::XmlOutputter::XmlOutputter (this=0x7fffc180bc00, result=<optimized out>, stream=<optimized out>, encoding=...) at XmlOutputter.cpp:21
21      XmlOutputter.cpp: No such file or directory.
        in XmlOutputter.cpp
(gdb) where
#0  0x000000000100ad8e in CppUnit::XmlOutputter::XmlOutputter (this=0x7fffc180bc00, result=<optimized out>, stream=<optimized out>, encoding=...) at XmlOutputter.cpp:21
#1  0x00000000016e7d18 in ?? ()
#2  0x0000000001426498 in std::string::_Rep::_S_empty_rep_storage ()
#3  0x000000000101488a in ?? ()
#4  0x00000000016d1de8 in ?? ()
#5  0x00000000016e79e0 in ?? ()
#6  0x00000000016e79f0 in ?? ()
#7  0x00000000016e79e8 in ?? ()
#8  0x00007f93740040e0 in ?? ()
#9  0x00007f9374001310 in ?? ()
#10 0x0000000000000004 in ?? ()
#11 0x00007fffc180bcf8 in ?? ()
#12 0x00007f93740040e0 in ?? ()
#13 0x00000000016e79e0 in ?? ()
#14 0x000000000100b1a2 in CppUnit::XmlOutputter::addSuccessfulTest (this=<optimized out>, test=0x7f9374004de0, testNumber=32767, testsNode=0x7f9374001610) at XmlOutputter.cpp:195
#15 0x00007f937c47bd85 in std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long) () from /usr/lib64/libstdc++.so.6
#16 0x000000000100a887 in CppUnit::TextTestRunner::~TextTestRunner (this=<optimized out>, __in_chrg=<optimized out>) at TextTestRunner.cpp:36
#17 0x000000000100a4ca in __exchange_and_add_single (__val=<optimized out>, __mem=<optimized out>) at /proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/ext/atomicity.h:70
#18 __exchange_and_add_dispatch (__val=<optimized out>, __mem=<optimized out>) at /proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/ext/atomicity.h:86
#19 _M_dispose (__a=<optimized out>, this=<optimized out>) at /proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/basic_string.h:234
#20 ~basic_string (this=<optimized out>, __in_chrg=<optimized out>) at /proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/basic_string.h:494
#21 _Destroy<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > (__pointer=<optimized out>) at /proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/stl_construct.h:88
#22 _Destroy<std::basic_string<char, std::char_traits<char>, std::allocator<char> >*> (__last=<optimized out>, __first=<optimized out>) at /proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/stl_construct.h:103
#23 _Destroy<std::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > (__last=<optimized out>, __first=0x0)
    at /proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/stl_construct.h:128
#24 _M_destroy_data_aux (__last=<optimized out>, __first=<optimized out>, this=<optimized out>) at /proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/deque.tcc:709
#25 _M_destroy_data (__last=<optimized out>, __first=<optimized out>, this=<optimized out>) at /proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/stl_deque.h:1604
#26 ~deque (this=<optimized out>, __in_chrg=<optimized out>) at /proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/stl_deque.h:776
#27 ~Message (this=<optimized out>, __in_chrg=<optimized out>) at ../../include/cppunit/Message.h:39
#28 CppUnit::TextOutputter::printFailureDetail (this=0x407a80, thrownException=0x7fffc180d1b0) at TextOutputter.cpp:101
#29 0x00007f937c3e7b38 in ?? () from /usr/lib64/libstdc++.so.6
#30 0x00007fffc180bf50 in ?? ()
#31 0x00007fffc180c0b0 in ?? ()
#32 0x00007fffc180c0c8 in ?? ()
#33 0x00007f937d84f58b in _dl_map_object_deps () from /lib64/ld-linux-x86-64.so.2
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
程序以信号11终止,分段故障。
#0 0x000000000100ad8e,位于XmlOutputter.cpp:21处的cppunt::XmlOutputter::XmlOutputter(this=0x7fffc180bc00,result=,stream=,encoding=…)中
21 xmlooutputter.cpp:没有这样的文件或目录。
在XmlOutputter.cpp中
(gdb)在哪里
#0 0x000000000100ad8e,位于XmlOutputter.cpp:21处的cppunt::XmlOutputter::XmlOutputter(this=0x7fffc180bc00,result=,stream=,encoding=…)中
#1 0x00000000016e7d18英寸??()
#std::string::_Rep::_S_empty_Rep_存储()中的2 0x0000000001426498
#3 0x000000000101488a英寸??()
#4 0x00000000016d1de8英寸??()
#5 0x00000000016e79e0英寸??()
#6 0x00000000016e79f0英寸??()
#7 0x00000000016e79e8英寸??()
#8 0x00007f93740040e0英寸??()
#9 0x00007f9374001310英寸??()
#10 0x0000000000000004英寸??()
#11 0x00007fffc180bcf8英寸??()
#12 0x00007f93740040e0英寸??()
#13 0x00000000016e79e0英寸??()
#CppUnit::XmlOutputter::addSuccessfulTest(this=,test=0x7f9374004de0,testNumber=32767,testsNode=0x7f9374001610)中的14 0x000000000100b1a2位于XmlOutputter.cpp:195
#std::basic_ostream和std::_ostream_insert(std::basic_ostream&,char const*,long)()中的15 0x00007f937c47bd85来自/usr/lib64/libstdc++.so.6
#在TextTestRunner.cpp:36处,CppUnit::TextTestRunner::~TextTestRunner中的16 0x000000000100a887
#17 0x000000000100a4ca在/proj/ims\u lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/ext/atomicity.h处的交换和添加单(\uuuuu val=,\uuu mem=)中
#18(exchange)和(add)调度(val=,(mem=)在/proj/ims\lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/ext/atomicity.h:86
#19在/proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/basic_string.h:234
#20~basic_string(this=,__in_chrg=)at/proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/basic_string.h:494
#21在/proj/ims\u lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/stl\u construct.h:88处销毁(\u指针=)
#22在/proj/ims\u lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/stl\u construct处销毁(uuu last=,uuu first=)。h:103
#23销毁(\uuuuu last=,\uuuuuu first=0x0)
at/proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/stl_construct.h:128
#24在/proj/ims\u lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/deque.tcc:709处销毁数据
#25在/proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/stl_deque.h:1604处销毁数据(uu last=,u first=,this=)
#26~deque(this=,__in_chrg=)位于/proj/ims_lu/repository/LOTC/R1A07-0/usr/include/c++/4.3/bits/stl_deque.h:776
#27~消息(this=,u in_chrg=)位于.././include/cppunit/Message.h:39
#28 textOutputer.cpp:101处的cppunt::textOutputer::printFailureDetail(this=0x407a80,thrownException=0x7fffc180d1b0)
#29 0x00007f937c3e7b38英寸??()来自/usr/lib64/libstdc++.so.6
#30 0x00007fffc180bf50英寸??()
#31 0x00007fffc180c0b0英寸??()
#32 0x00007fffc180c0c8英寸??()
#33 0x00007f937d84f58b位于/lib64/ld-linux-x86-64.so.2的
回溯已停止:此帧内部的上一帧(堆栈损坏?)

只是猜测,但请尝试将通用TestRunner与XMLOutputer一起使用,而不是TextTestRunner


看起来像是某种内存损坏。你有一个最小的样本来重现这个问题吗?毫无疑问,它没有解决这个问题。我仍然有类似的行为
CPPUNIT_NS::TextUi::TestRunner runner;

std::ofstream outputFile("testOutput.xml" );
CPPUNIT_NS::XmlOutputter  xmlOutputter( &runner.result(), outputFile ); 
runner.addTest( testSuite );
runner.setOutputter( &xmlOutputter );
runner.run();