我有一个程序冻结(特别是sql开发人员),里面有一些未保存的文件。我使用sysinternal的进程资源管理器在终止进程之前创建转储文件。我真的只失去了几个小时的工作,但我认为看看我可以从转储文件中提取的内容是一个很好的学习经验。到目前为止,我已经下载并运行了windbg并找到了我的文字:
s -u 0x00000000 L?0xffffffff "text I know exists in my file"
从那里我得到了相关的内存地址,可以查看内存窗口中的文本以及大部分文件。但是,从这里我有点卡住了。我知道我可以使用du命令来转储文本,但我应该使用什么样的策略来确定开始和结束范围。这是一个1千兆转储所以我永远不会将0x00000000转储到0xffffffff,因为我没有大多数编辑器可以打开的文本文件。有没有办法只是转储用户内存或非代码内存等?它无论如何都不一定是完美的。我满足于只在文本板中打开转储文件,但是unicode数据没有显示,只显示了ascii(大概是因为textpad无法检测到类型,或者因为它是64位转储)。
答案 0 :(得分:6)
您还可以尝试sysinternals(现在为MS)中的strings.exe实用程序,并将所有输出(unicode和ascii)重定向到文本文件。然后搜索文本文件(或者只是将它放在眼睛上)以寻找您正在寻找的内容。