反汇编分析线上core文件

当线上服务出现FATAL时,在FATAL日志里往往只有FATAL时程序的调用栈信息,且有些stack frame并没有符号,只有一个内存地址。这个时候可以使用该Debug技巧,找到该stack frame确切的函数名及函数内部的偏移量。

分步指南

1.记录address,如0x5463e4。

2.gdb path_to_binary,如服务无符号表,需编译时加上符号表。

3.>info symbol address,会有如下类似的输出:
ads_serving::show::IOHandler::HandleRequest(net::HttpSeession*) + 468 in section.text

4.编译与线上版本一致的服务,找到对应函数所在的object文件,如io_handler.o

5.objdump-Sobject文件,找到函数的起始位置,再加上转为16进制的偏移量后,即为服务FATAL时code。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部