DotPeek PDB生成用于没有调试目录的程序集

时间:2015-07-08 17:05:42

标签: debugging portable-executable dotpeek

我尝试使用JetBrains dotPeek 1.4符号服务器但是我遇到了一些失败的第三方程序集,其dotPeek状态为:

Pdb has not been generated because assembly does not contain debug directory

使用CFF资源管理器我发现这些程序集有空的"调试目录"可移植可执行(PE)标头值。

是否有(简单)方法编辑PE以添加Debug Directory标头值?

1 个答案:

答案 0 :(得分:4)

de4dot在dotPeek眼中创建了无效的.net可执行模块。然而,这是dotPeek的问题,而不是de4dot。但由于我们没有dotPeek的来源,我们应该修改de4dot而不是实现互操作性。 修改:de4dot.code / AssemblyModule.cs模块添加

writerOptions.WritePdb = true;
module.CreatePdbState();

到de4dot.code.AssemblyModule.Save函数,你在exe模块中填写了有效的pdb函数。

为了节省您的时间,您可以将de4dot项目与我的补丁一起使用:https://github.com/earnol/de4dot/commit/24c6e696fb9251f7d048ac33c88c710013a649d6 它会将调试目录添加到输出可执行文件中。只需删除生成的PDB并再次运行dotPeek。它将完美无瑕地运作。 使用类似:de4dot.exe -f filein.exe -o fileout.exe -fpdb