【发布时间】:2013-08-22 07:16:16
【问题描述】:
在我的应用程序中,我使用的是第三方 dll,并且我没有任何可用的源代码。 现在我在 Windows7 操作系统中遇到了异常,所以我想调试并知道确切的原因是什么。
Reflector 在这种情况下不会帮助我,因为它是一个非托管的 dll。并且反编译器在传递这个 dll(源代码提取)时出错。
要在 Visual Studio 中调试,它需要 PDB 文件和 .pdb 只能从源代码生成。
在调试部分我选择了“启用本机代码调试选项”,在安全部分我选择了作为部分受信任的应用程序的选项来消除异常。
我无法得出结论,可能是什么问题,除了上述之外没有任何想法,如何解决?
据我所知,如果我们没有可用的源代码,我们无法调试非托管 dll。
如果我们有任何相关技术,请任何人提出建议。
我的思考过程:如果我能获得关于哪个 API 失败的运行时信息,我可以选择替代 API 并解决问题。
提前致谢。
问候, 湿婆。
【问题讨论】:
-
没有调试符号就无法调试。除非你不懂反汇编程序。你从谁那里得到的dll?他们或许能提供帮助。如果你存根 3rd 方的东西,你会得到类似的错误 - 你确定这不是你的代码吗?
-
可以在 VS 中调试没有源代码的本地代码就好了。它需要一定程度的组装知识,但这应该不是问题……(至少不是可以在 SO 上解决的问题)。
-
@doctorlove:是的,它是一个第三方 dll 和源代码对他们来说是专有的,我不能向他们索要源代码。到目前为止,我们在 Windows XP 中使用这个 dll,它工作正常。现在我们开始测试在Windows7开始崩溃。因此,有了你们所有的建议,我可以将问题报告给第三方并要求他们解决。
-
@AlexeiLevenkov:我对这个 dll 感到不满。所以我的意图是让我们不要依赖那个 dll 并在 .Net 中编写我自己的代码。但结果应该是一样的。如果我可以调试里面的 dll,我可以得到使用的技术,所以我可以写类似的行。我同意你的观点,我们仍然有机会使用汇编代码。
-
向图书馆的创建者报告是您最安全的选择。请注意,调试和逆向工程之间的界限非常细——在尝试“使用技术,这样我可以用类似的方式编写”之前咨询律师可能是个好主意。
标签: c# dll com visual-studio-debugging