繁体   English   中英

在运行时调试链接到的dll

[英]Debugging a dll linked to at runtime

为了实现模块化,我在运行时链接到解决方案中的dll,而不是在编译时允许我独立更新它。 当我在库项目中放置断点时,当类链接到该断点并创建类型时,不会触发这些断点。

作为参考,这是反射代码:

Assembly a = Assembly.LoadFile(FULL_APPLICATION_CACHE + targetVersion + "\\Core.dll");
Type engineCoreType = a.GetType("Core.EngineCore");
object instance = Activator.CreateInstance(engineCoreType);

在这种情况下,Visual Studio是否可以提供其常规调试工具? 我将如何配置呢?

调试器需要能够找到该程序集的.pdb文件。 您可以从“调试器+ Windows +模块”窗口中进行诊断。 右键单击DLL,然后选择“符号加载信息”,它向您显示调试器在何处查找PDB。

请注意,在这种情况下永远不要使用Assembly.LoadFile(),它会在没有加载上下文的情况下加载程序集。 一个昂贵的词意味着CLR不会关注DLL的来源,并且允许您多次加载DLL。 本身解释了为什么调试器找不到PDB。 始终改为使用LoadFrom()。

您需要确保.pdb文件与要加载的dll位于同一位置。 然后,Visual Studio将加载该数据并允许其在断点处停止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM