有没有办法使用dmp文件调试DLL没有主机应用程序的源代码

时间:2016-09-01 11:33:52

标签: windows dll crash-dumps

有没有办法使用dmp文件调试DLL而没有主机应用程序的源代码?

假设我为某些外部系统编写插件,而我没有任何源代码。当我的插件崩溃时,我可以为故障模块生成转储。但有没有办法在这种情况下获得任何有用的信息?

1 个答案:

答案 0 :(得分:0)

是的,它可能很有用。我反过来做过:我有主机系统的源代码,但没有插件的源代码。大约5年我能够分析我们的应用程序(.NET)中的崩溃,但也发现了插件中的问题(主要是C ++)。

你能做什么,例如找出:

  • 主机系统的版本(在WinDbg中使用lmv
  • 您使用的插件版本(在WinDbg中再次lmv
  • 如果其他插件处于活动状态/已安装(在WinDbg中再次lmv
  • 操作系统及其重现的位数(根据客户报告的操作系统进行验证)
  • 调用了哪个API方法(因为它们是公开的)(WinDbg中为k)以及传递了哪些参数,因此您可以验证这些

如果应用程序的某些部分在.NET中,它会更有用,因为您可以获得大量额外信息。需要注意的事项:理想情况下,您有一个包含full memory信息的转储文件。我总是要求那些。

看看微软:他们获得蓝屏信息,只传输少量数据(几kb)。由于Microsoft代码,蓝屏不太可能发生。人们更有可能以不正确的方式使用他们的API。但是,微软仍然能够分析是什么使它成为蓝屏并应用反制措施,即使他们没有拥有每个人的代码。