关闭

dump文件字符串内容搜索

241人阅读 评论(0) 收藏 举报
分类:

当我们的进程发生了coredump,而我们想看一下core文件中是否包含某字符串,应该怎么做呢?

 

举个简单的例子:

 

#include "stdio.h"
#include "string.h"
#include "stdlib.h"

int main()
{
    char *testStr = "test_info";
    while(1)
    {
        char *verifyStr = (char*)malloc(sizeof(testStr));
        strncpy(verifyStr,testStr,strlen(testStr));
        free(verifyStr);
    }
    return 0;
}

 

如上代码中,会在全局变量区保存字符串test_info,也会在堆上申请内存,保存test_info,只不过每次存储后内存地址又被释放了。

 

如上代码对应的进程如果coredump了,那dump文件中一定是存在test_info的字符串内容的。

 

下面我们就介绍几种看dump文件中是否包含某一个字符串的方法。并能看到字符串对应的位置的上下文信息。

 

首先,我们把上面代码放到某一linux机器上,gcc -o dumpTest dumpTest.c编译一下,生成可执行文件。Chmod a+x dumpTest给该文件赋予可执行权限。./dumpTest执行程序。

最后使用gcore生成该进程的dump文件。

 

 




 

gcore的格式

 

   gcore -o filename PID

 

1、使用find命令

  

    

 

使用find ./ -type f -name dumpTest_core_23782.23782|xargs grep "test_info"命令查找文件中是否包含”test_info”字段内容。

 

2、使用objdump命令

 

   

 

如上截图,使用objdump -s dumpTest_core_23782.23782|grep "test_info"命令查找dump文件中是否包含”test_info”字符串,以及字符串在dump文件中的位置。

 

3、使用UE

 

   UE可以查看很多格式类型的文件,包括dump文件。

 

   如下截图,首先用UE打开dump文件

 

    

 

然后,使用ctrl+F 搜索字符串

 

 

 

 

 

如上截图所示,查找的时候勾选”查找ASCII”“匹配大小写”。点击查找下一个个,就能看到字符串,同时还能看到字符串在dump文件中的上下文内容。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:62657次
    • 积分:762
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:25篇
    • 译文:0篇
    • 评论:6条
    最新评论