gpt4 book ai didi

c++ - 在 C++ 中使用 backtrace() 函数时出错?

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:51 25 4
gpt4 key购买 nike

我必须获取 C++ 函数中的回溯并将其存储到字符串中,如下所示:

string myFunction()
{
void *array[5002];
// get void*'s for all entries on the stack
size_t size = backtrace(array, 5000);
char** trace = backtrace_symbols(array, size);
string stackTrace;
for(size_t index=0; index<size; ++index)
{
stackTrace += trace[index];
}
return stackTrace;
}

通过上述代码的使用,我遇到了内存错误。上述错误的 gdb 回溯如下

?? () from /lib64/libgcc_s.so.1
0x000000359be08934 in _Unwind_Backtrace () from /lib64/libgcc_s.so.1
0x00000035976e6358 in backtrace () from /lib64/libc.so.6
0x00002aaaab7afaec in (anonymous namespace)::myFunction() at fileName.cpp

有什么建议可以解决这个问题吗?提前致谢。

最佳答案

您需要将 -rdynamic 编译器标志添加到 gcc/g++:

g++ -rdynamic -Wall -o file.bin file.cpp

关于c++ - 在 C++ 中使用 backtrace() 函数时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8009113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com