我想调试两个进程,(ProcessA.exe和ProcessB.exe)
在通常情况下,启动ProcessA时将启动ProcessB。 ProcessA是一个跨平台的exe。 ProcessB是C#应用程序。(Visual Studio 2010 Professional)。
我做了以下调试ProcessB(C#)
在Visual Studio 2010“附加到进程”窗口中:,
附加到:作为“托管(v4。)代码”。
我把断点放在C#代码中。但是断点永远不会被执行,ProcessB调用也没有在没有调试的情况下执行(即,从不同位置启动所有进程)
答案 0 :(得分:1)
如果A通常开始B,那么看起来你应该让A开始B然后在它开始后将视觉工作室附加到B过程。
答案 1 :(得分:1)
Microsoft Child Process Debugging Power Tool很好地处理了这种情况。它可以与Visual Studio 2013一起使用。
This blog post涵盖了一些必须设置的选项,主要是“如果您正在调试.NET代码,则必须选择启用混合模式调试”,但是我建议您通读全文帖子。
答案 2 :(得分:0)
您应该附加到流程B 而不是流程A
您可以尝试以下操作:
如果需要调试进程A,则应使用具有本机调试的单独VS实例来完成此操作。
答案 3 :(得分:0)
如果您可以更改ProcessB的代码,我建议添加对参数“-d”或“-debug”的支持,该参数触发MessageBox出现在Main方法的开头以暂停执行并允许您附加到这个过程。连接后,单击MessageBox中的“确定”继续。在MessageBox调用之后不久添加一个调试断点。
if (arguments.Debug)
{
// Make it easy to find in the process list.
MessageBox.Show("Attach to process now.", "Attach to this process!");
}