小编kor*_*han的帖子

如何获得更详细的回溯

当我的C++程序终止时,我正在尝试打印回溯.功能打印回溯如下所示;

   void print_backtrace(void){

       void *tracePtrs[10];
       size_t count;

       count = backtrace(tracePtrs, 10);

       char** funcNames = backtrace_symbols(tracePtrs, count);

       for (int i = 0; i < count; i++)
           syslog(LOG_INFO,"%s\n", funcNames[i]);

       free(funcNames);

}
Run Code Online (Sandbox Code Playgroud)

它给出了类似的输出;

   desktop program: Received SIGSEGV signal, last error is : Success
   desktop program: ./program() [0x422225]
   desktop program: ./program() [0x422371]
   desktop program: /lib/libc.so.6(+0x33af0) [0x7f0710f75af0]
   desktop program: /lib/libc.so.6(+0x12a08e) [0x7f071106c08e]
   desktop program: ./program() [0x428895]
   desktop program: /lib/libc.so.6(__libc_start_main+0xfd) [0x7f0710f60c4d]
   desktop program: ./program() [0x4082c9]
Run Code Online (Sandbox Code Playgroud)

有没有办法获得更详细的函数名称和行回溯,如gdb输出?

c linux

19
推荐指数
2
解决办法
1万
查看次数

memcpy()函数是否可重入?

我在信号处理程序中调用了一些C++函数,我的程序由分段错误终止.当我用gdb检查时,memcpy()函数是我获得SIGSEGV的地方.我想知道memcpy()是否是一个可重入函数?

c c++ reentrancy memcpy

5
推荐指数
2
解决办法
3074
查看次数

标签 统计

c ×2

c++ ×1

linux ×1

memcpy ×1

reentrancy ×1