Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用dll时,断点从未命中 我已经向C++的.NET项目添加了一个托管C++ DLL(使用“添加资源”);它发现我试图实例化的类很好,没有编译器错误。但不知何故,我知道我实例化的字段得到了空引用异常。所以我在设置字段的方法顶部放了一个断点。。。而且它从来没有被击中过。如果我使用.dll中的类注释掉该行,它将命中断点。取消对该方法的注释,该方法即使被调用也不会执行。这里发生了什么事_C#_C++_.net_Dll - Fatal编程技术网

C# 调用dll时,断点从未命中 我已经向C++的.NET项目添加了一个托管C++ DLL(使用“添加资源”);它发现我试图实例化的类很好,没有编译器错误。但不知何故,我知道我实例化的字段得到了空引用异常。所以我在设置字段的方法顶部放了一个断点。。。而且它从来没有被击中过。如果我使用.dll中的类注释掉该行,它将命中断点。取消对该方法的注释,该方法即使被调用也不会执行。这里发生了什么事

C# 调用dll时,断点从未命中 我已经向C++的.NET项目添加了一个托管C++ DLL(使用“添加资源”);它发现我试图实例化的类很好,没有编译器错误。但不知何故,我知道我实例化的字段得到了空引用异常。所以我在设置字段的方法顶部放了一个断点。。。而且它从来没有被击中过。如果我使用.dll中的类注释掉该行,它将命中断点。取消对该方法的注释,该方法即使被调用也不会执行。这里发生了什么事,c#,c++,.net,dll,C#,C++,.net,Dll,dll是ManagedSpyLib,类是,如果有帮助的话。该调用位于backgroundworker的DoWork方法中,该方法肯定是异步启动的——整个线程是否会在没有通知调试器的情况下悄无声息地崩溃?我如何调试这个 ETA:我在输出窗口或模块窗口中找不到关于dll的任何信息。一些谷歌搜索找到了一个解决方案:将目标更改为.NET3.5框架。但我并没有比以前更接近于理解WTF正在发生的事情——我的代码可以工作,但现在我不知道为什么,这更令人费解。有人能解释这种现象吗?调试未知错误/无法在断点处停止

dll是ManagedSpyLib,类是,如果有帮助的话。该调用位于backgroundworker的DoWork方法中,该方法肯定是异步启动的——整个线程是否会在没有通知调试器的情况下悄无声息地崩溃?我如何调试这个


ETA:我在输出窗口或模块窗口中找不到关于dll的任何信息。一些谷歌搜索找到了一个解决方案:将目标更改为.NET3.5框架。但我并没有比以前更接近于理解WTF正在发生的事情——我的代码可以工作,但现在我不知道为什么,这更令人费解。有人能解释这种现象吗?

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

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

在调试时,检查输出窗口中是否有任何可疑跟踪(特别是关于异常)


考虑中断所有异常(对于CLR异常,调试->异常->抛出时)。可能需要禁用“仅我的代码”(工具->选项->调试->仅我的代码)来破解所有异常。

这让我通过谷歌找到了解决方案,但我更困惑了。请参阅问题编辑。调试行为与异常一致。是的,BGW的DoWork()方法中的异常会被忽略。不要忘记在RunWorkerCompleted事件处理程序中测试e.Error。或者使用Debug+Exception,shown复选框让调试器停止。我不知道,你应该从调试器告诉你的内容中了解更多。否则,您会抱怨NullReferenceExceptions。@HansPassant这是一个null引用,因为我希望在程序中该点调用的方法根本没有运行,因为。。。。。我不知道,但与.NET4.0有关。我看不出“断点未被命中,因为从未输入方法”与“nullPointerException”如何“一致”,因为我在访问对象之前设置了断点。断点未命中=>代码未运行=>变量未初始化=>NullReferenceException。