c# - 调用 dll 时从未命中断点

标签 c# c++ .net dll

我已将托管的 c++ dll 添加到我的 c#.net 项目中(使用“添加资源”);它发现我正在尝试实例化的类很好,没有编译器错误。但不知何故,我知道我实例化的字段正在获取空引用异常。所以我在设置字段的方法的顶部放置了一个断点......它永远不会被击中。如果我使用 .dll 中的类注释掉该行,它就会到达断点。取消注释,尽管被调用,该方法也永远不会执行。这里发生了什么?

dll是ManagedSpyLib,类是ControlProxy ,如果有帮助的话。该调用位于后台工作程序的 DoWork 方法中,该方法肯定是异步启动的——整个线程是否会在甚至不提醒调试器的情况下静默崩溃?我该如何调试?

预计到达时间:我在输出窗口或模块窗口中找不到任何关于 dll 的信息。一些谷歌搜索找到了解决方法:将目标更改为 .net 3.5 框架。但我并没有比以前更了解 WTF 是怎么回事——我的代码可以工作,但现在我不知道为什么,这更令人费解。有人可以解释这种现象吗?

最佳答案

调试未知错误/无法在断点处停止的通用步骤:

确保您已为有问题的 DLL 加载 PDB(调试 -> 窗口 -> 模块)。确保来源与您使用的版本相匹配。

在调试时检查输出窗口中是否有任何可疑痕迹(尤其是关于异常的痕迹)。

考虑中断所有异常(Debug->Exceptions -> CLR 异常的“When thrown”)。可能需要禁用“仅限我的代码”(工具->选项->调试->仅限我的代码)以在所有异常时中断。

关于c# - 调用 dll 时从未命中断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11727368/

相关文章:

c++ - 使用 Boost Graph Library 删除顶点后无法删除边

c++ - Visual Studio 2013 不会忽略禁用的警告

c# - 同一 EPPlus 工作表的多个自动过滤器

c# - 将 varbinary 从 sql 加载或转换为文本框文本?

asp.net - 使用SqlDataReader时如何获取存储过程的返回值?

c# - 在 C# 中发送 USSD?

c# - Mongodb中BsonTimestamp构造函数的第二个参数increment是什么意思?

C# - 通用接口(interface)

c# - 在 C# 的对象列表中打印出 1 个对象

c++ - 在 C++ 中动态更改类的属性