【发布时间】:2014-03-11 08:41:02
【问题描述】:
我有一个多线程 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# 代码。
你有什么想法来调试这个问题吗?
【问题讨论】:
-
在调试模式下构建它们?
-
@nvoigt 如果我在调试模式下构建它们,发生类似情况需要很长时间(可能需要几天)!由于是多线程程序,问题可能与多线程有关,所以在调试模式下可能不会出现类似情况!
-
你试过了吗?毕竟,明天调试似乎总比今天不调试好。你能自己运行(和调试)C++ exe吗?
-
在类似的方法中,如果 C# 应用程序不打开 C++ 输出文件,C++ 应用程序会发生什么情况?例如,可能一台计算机同时运行两个应用程序,但 C# 版本故意不打开 C++ 输出文件的任何文件句柄。在单独的测试中,另一台计算机仅运行 C++ 应用程序。我会回顾一下 C++ 线程是如何打开和关闭输出文件的。
-
@nvoigt 你是对的,但由于它很耗时,我想将它作为最后的手段,我更喜欢找到一种更快的调试方法。因为我的最终应用程序正在使用
C#代码,所以我想对其进行调试,并且我想确保我的最终程序没有任何错误。
标签: c# c++ multithreading visual-studio debugging