使用CFF Explorer I发现这些程序集有空的调试目录可移植可执行文件(PE)头值。
有没有(简单)的方式来编辑PE添加调试目录标题值?
解决方案de4dot在dotPeek眼中创建无效的可执行模块。但是,dotPeek不是de4dot的问题。但是由于我们没有dotPeek的来源,我们应该修改de4dot来实现互操作性。 修改:de4dot.code / AssemblyModule.cs模块添加
writerOptions.WritePdb = true; module.CreatePdbState();to de4dot.code.AssemblyModule.Save函数,您填写了exe模块中有效的pdb函数。为了节省您的时间,您可以使用de4dot项目与我的补丁: github/earnol/de4dot/commit/24c6e696fb9251f7d048ac33c88c710013a649d6 它将添加调试目录到输出可执行文件。只需删除生成的PDB并再次运行dotPeek。它将无瑕疵地工作。 使用像:de4dot.exe -f filein.exe -o fileout.exe -fpdb
I'm attempting to use JetBrains dotPeek 1.4 symbol server however I've encountered some 3rd party assemblies that fail, with dotPeek status of:
Pdb has not been generated because assembly does not contain debug directoryUsing CFF Explorer I've discovered that these assemblies have empty "Debug Directory" Portable Executable (PE) header values.
Is there an (easy) way to edit the PE to add Debug Directory header values?
解决方案de4dot creates invalid executable module in the eyes of dotPeek. It's problem of dotPeek, not de4dot, however. But since we do not have sources of dotPeek we ought to modify de4dot instead to achieve interoperability. Modify: de4dot.code/AssemblyModule.cs module adding
writerOptions.WritePdb = true; module.CreatePdbState();to de4dot.code.AssemblyModule.Save function and you fill have valid pdb function in exe module.
To save your time you can use de4dot project with my patch: github/earnol/de4dot/commit/24c6e696fb9251f7d048ac33c88c710013a649d6 It will add debug directory to the output executable. Just delete resulting PDB and run dotPeek again. It will work flawlessly. Use something like: de4dot.exe -f filein.exe -o fileout.exe -fpdb
更多推荐
DotPeek PDB生成用于没有调试目录的程序集
发布评论