从C#代码调试C ++ exe

时间:2014-03-11 08:41:02

标签: c# c++ multithreading visual-studio debugging

我有一个多线程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#代码。

你有任何想法调试这个问题吗?

1 个答案:

答案 0 :(得分:0)

这可能不是一个很好的答案,但作为使用Windows API函数OutputDebugString()进行故障排除的一篇很好的参考文章。 Mark Nelson在2014年3月11日发布的Dobb博士网站上发表了一篇精彩的文章:Blundering into the One Definition Rule

其中包含有关如何利用Microsoft DebugView utlity的优秀详细信息,以及在对任何内容进行故障排除时发布的单个头文件的解决方案。很有可能本文第二页的短类定义是必要的,以隔离C ++ exe中问题所在的位置。请查看文章以充分了解单行作用域和强制OutputDebugString()函数调用。使用这个帮助器类应该减少隔离50%使用停顿和C ++线程似乎死锁的时间。