从c#代码调试c++ exe

本文关键字:c++ exe 调试 代码 | 更新日期: 2023-09-27 17:49:22

我有一个多线程c++控制台应用程序。我写了一个c#程序来使用我的c++代码的执行文件。

为了通过c#运行c++应用程序,我为c++应用程序定义了一个Process,并使用下面的命令来执行它:

_process.StandardInput.WriteLine(command);

执行几个小时后,c++程序的CPU使用率保持在50%,c++程序停止工作!我不知道我该如何理解问题所在!

我试着在visual studio 2014中通过Debug -> Attach to Process将c++ exe附加到c#程序,但它没有显示任何有用的信息!

我使用visual studio的发布模式构建了c++ exe,我也使用visual studio的发布模式运行c#代码。

你有什么办法来调试这个问题吗?

从c#代码调试c++ exe

这可能不是一个答案,但作为使用Windows API函数OutputDebugString()进行故障排除的一个很好的参考文章。Mark Nelson在Dr. Dobb的网站上有一篇很棒的文章,发表于2014年3月11日:《浮躁地进入一个定义规则》。

里面有关于如何利用Microsoft DebugView实用程序的优秀细节,以及在故障排除时发布的单个头文件的解决方案。文章第二页上的简短类定义很可能是隔离c++ exe中问题所在的必要条件。请阅读本文以完全理解单行作用域和强制OutputDebugString()函数调用。使用这个helper类可以减少隔离50%的使用停滞和c++线程出现死锁的时间。