Debugging 新CIL目标:调试信息

Debugging 新CIL目标:调试信息,debugging,clr,cil,pdb-files,ilasm,Debugging,Clr,Cil,Pdb Files,Ilasm,我正在开发一个新的CIL目标,我不太确定如何处理调试信息。 我自己实现了一个PE编写器,所以它不依赖于ilasm。从我在ECMA文档中看到的内容来看,有CILDB调试格式,但它与PDB和Mono的MDB都不同。因此,如果我想包含调试信息,我无论如何都需要使用ilasm进行编译(并使用.line指令) 然而,即使我使用ilasm编译,在我看来.line指令也不足以包含足够的调试信息来实现完整的调试功能——例如,调试器如何知道目标标识符和局部变量之间的映射? 在我看来,解决这个问题的最好办法是只支持

我正在开发一个新的CIL目标,我不太确定如何处理调试信息。 我自己实现了一个PE编写器,所以它不依赖于ilasm。从我在ECMA文档中看到的内容来看,有CILDB调试格式,但它与PDB和Mono的MDB都不同。因此,如果我想包含调试信息,我无论如何都需要使用ilasm进行编译(并使用.line指令)

然而,即使我使用ilasm编译,在我看来.line指令也不足以包含足够的调试信息来实现完整的调试功能——例如,调试器如何知道目标标识符和局部变量之间的映射? 在我看来,解决这个问题的最好办法是只支持Mono的开放调试格式——这将是一个遗憾


有人对此有任何资源吗?

回答我自己的问题,我发现Cecil同时拥有PDB和MDB读者/作者。我将移植它们,这似乎是处理它们的好方法。

使用。需要COM技能。或者@HansPassant,谢谢你的回答。我正在编写的编译器不是用.NET编写的,而且是跨平台的,所以我认为COM不能解决这个问题。至于CCI项目,我恐怕找不到任何关于PDB写作的东西。我错过了吗?如果可移植性是必不可少的(千万不要在问题中忽略这一点),那么你应该首先仔细看看PDB是可移植的可能性。这是一种高度特定于Microsoft的格式。你说得对。我考虑了更多的后续资源。最后,塞西尔似乎使用了你提到的CCI项目,所以你的答案一直都是正确的!谢谢