1
Ediacaran 2022-08-19 19:45:57 +08:00 via iPhone 1
unwind
|
2
0o0O0o0O0o 2022-08-19 19:46:29 +08:00
libunwind
|
3
huangya OP |
4
microxiaoxiao 2022-08-19 21:22:26 +08:00 via Android
我觉得你需要的是 ptrace ,嘻嘻。
|
5
Madcrow 2022-08-19 22:59:17 +08:00
函数里调用一下:
``` #include <stdio.h> #include <execinfo.h> void print_trace(void) { char **strings; size_t i, size; enum Constexpr { MAX_SIZE = 1024 }; void *array[MAX_SIZE]; size = backtrace(array, MAX_SIZE); strings = backtrace_symbols(array, size); for (i = 0; i < size; i++) printf("%s\n", strings[i]); puts(""); free(strings); } ``` |
6
Inn0Vat10n 2022-08-19 23:44:07 +08:00
简单的方式,while true 或者 sleep, gdb/pstack 看
|
7
by73 2022-08-21 14:17:50 +08:00
如果内核比较新的话,可以考虑用 bpftrace ,但是这玩意编译比较痛苦。。用它依赖的 [uprobe]( https://www.kernel.org/doc/html/latest/trace/uprobetracer.html) 相对来说也可行,不过我没咋研究过😂
|