我写了一个运行的程序
- 每 20 秒
- 当运行那段代码的特定请求出现时。
- 每 1 分钟
上面列表中的 1 和 3 是两个不同的实例,可以重叠。
程序
给麻烦的函数的签名。
bool ProcessInfoHandler::getCPUInfo (rsc::ProcInfo &procInfo, bool isThreadCall)
在运行程序大约 3 天后,我遇到了下面提到的崩溃。
#2 0x000000000041fdb8 in sn_sig_handler (signum=6, siginfo=0x451a7d80, undocumented= <value optimized out>) at common/main/sn_proc_main.cpp:109
#3 <signal handler called>
#4 0x00000031d9630265 in raise () from /lib64/libc.so.6
#5 0x00000031d9631d10 in abort () from /lib64/libc.so.6
#6 0x00000031d966a84b in __libc_message () from /lib64/libc.so.6
#7 0x00000031d967230f in _int_free () from /lib64/libc.so.6
#8 0x00000031d967276b in free () from /lib64/libc.so.6
#9 0x00000000004367a5 in deallocate (this=0x66cff0, __position=..., __x=<value optimized out>)
at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/new_allocator.h:94
#10 _M_deallocate (this=0x66cff0, __position=..., __x=<value optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:133
#11 std::vector<cpu_instance_data_t, std::allocator<cpu_instance_data_t> >::_M_insert_aux (this=0x66cff0, __position=..., __x=<value optimized out>)
at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/vector.tcc:299
#12 0x0000000000431f8e in ProcessInfoHandler::getCPUInfo (this=<value optimized out>, procInfo=..., isThreadCall=false)
at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:610
#13 0x00000000004333be in ProcessInfoHandler::getProcessInformation (this=0xc16f9c0, procInfoSeq=..., isThreadCall=false) at processinfohandler.cc:255
我的问题
- 与给出文件名和行号的第 13 帧不同,第 12 帧没有给出该信息。这是否意味着向量的引用传递存在问题?
- 关于我应该如何继续调试这个特定的堆栈跟踪的任何指针?
getCPUInfo
由于专有原因,无法给出代码。请建议是否有相同的解决方法。