Sor*_*ren 5 debugging kernel monitoring proc linux-kernel
我一直在查看 /proc 的文档,并且“堆栈”对象是 proc 中的一个新对象,我还查看了内核提交以创建它——但是文档没有详细说明 / proc/self/stack 文件——并且因为我直觉地认为它是进程的实际堆栈——但是旧pstack
工具给出了不同(并且更可信)的输出。
因此,作为 bash 堆栈的示例
$ cat /proc/self/stack
[<ffffffff8106f955>] do_wait+0x1c5/0x250
[<ffffffff8106fa83>] sys_wait4+0xa3/0x100
[<ffffffff81013172>] system_call_fastpath+0x16/0x1b
[<ffffffffffffffff>] 0xffffffffffffffff
Run Code Online (Sandbox Code Playgroud)
并且,使用 pstack
$ pstack $$
#0 0x00000038cfaa664e in waitpid () from /lib64/libc.so.6
#1 0x000000000043ed42 in ?? ()
#2 0x000000000043ffbf in wait_for ()
#3 0x0000000000430bc9 in execute_command_internal ()
#4 0x0000000000430dbe in execute_command ()
#5 0x000000000041d526 in reader_loop ()
#6 0x000000000041ccde in main ()
Run Code Online (Sandbox Code Playgroud)
地址不同,显然符号根本不一样......
有没有人对差异和/或描述 /proc-stack 中实际显示内容的文档有解释?