[调试技巧]利用dmesg来重现bug

@CodeBox-腾讯发表的一条微博,利用dmesg来重现bug。先抄下微博原文吧:

【调试小技巧】有时程序莫名crash了,但碰巧coredump没开,肿么办?有个补救的办法,在dmesg里会有coredump时的二进制地址,用addr2line工具可反推出问题时的文件名和行号。对难以重现的bug,有时这方法会救人一命。

 偶尔也会遇到线上进程挂掉了,但是又没有coredump文件。之前,我以为这种情况下,没办法迅速定位到bug了呢。看到这条微博后,我很是高兴。如是试验了一番,果然有效果。

dmesg 命令输出内容如下:

program_name[thread id]: segfault at XXXX rip YYYYY rsp XXX error X

然后,使用addr2line工具,具体:addr2line -e program_name YYYYYY -f

其输出结果就是发生segfault的代码位置。很是给力哦。 感谢@CodeBox-腾讯。

你可能感兴趣的:(调试小技巧)