Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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#应用程序时未命中断点_C#_Visual Studio_Robotframework_Ironpython_Visual Studio Debugging - Fatal编程技术网

从外部程序调用C#应用程序时未命中断点

从外部程序调用C#应用程序时未命中断点,c#,visual-studio,robotframework,ironpython,visual-studio-debugging,C#,Visual Studio,Robotframework,Ironpython,Visual Studio Debugging,我能够使用IronPython从Robot框架成功调用C#方法,但是我在C#端遇到了一些运行时错误,我希望使用Visual Studio进行调试。当通过外部程序/脚本调用C#应用程序的方法时,是否有办法使用Visual Studio调试该应用程序 我已经在VisualStudio中使用启动外部程序(提供外部程序所需的robot可执行路径和参数)配置了我的C#项目。当我开始调试时,我的外部程序按预期执行,C#方法也成功执行。但是,我在VisualStudio中设置的断点不会被命中 使用“启动外部程

我能够使用IronPython从Robot框架成功调用C#方法,但是我在C#端遇到了一些运行时错误,我希望使用Visual Studio进行调试。当通过外部程序/脚本调用C#应用程序的方法时,是否有办法使用Visual Studio调试该应用程序

我已经在VisualStudio中使用启动外部程序(提供外部程序所需的robot可执行路径和参数)配置了我的C#项目。当我开始调试时,我的外部程序按预期执行,C#方法也成功执行。但是,我在VisualStudio中设置的断点不会被命中


使用“启动外部程序”时,是否缺少任何细节?我的python脚本(外部程序)正在从构建C#项目时生成DLL的同一位置导入DLL。PDB文件也可以在与DLL相同的文件夹中使用。

对于我来说,断点没有命中,因为我没有附加正确的进程。让我详细解释一下,让其他用户了解根本原因

正如我在问题中提到的,我使用IronPython从Robot框架调用C#方法。因此,我使用robot.exe(robot Framework executable)作为我的外部程序(在VisualStudio中),我希望我的断点会在C#project下被命中。然而,问题在于C#方法是由ipy.exe(Iron Python)执行的,而不是由robot.exe执行的。看起来Robot框架在内部启动ipy.exe进程,然后ipy进程调用C#方法。这意味着我应该将ipy.exe进程附加到我的C#项目中,这样每当遇到断点时,控制就会转到Visual Studio


为了达到同样的效果,我做了以下几点。我在C代码的开头插入了Debug.Assert以停止执行。现在我已经启动了我的外部程序(Robot Framework测试用例),然后在执行过程中,由于C#项目中的Debug.Assert语句,出现了消息框。目前,我已经使用Visual Studio使用调试-->附加到进程将ipy.exe(Iron Python)进程附加到我的C#项目。之后,当我忽略消息框继续执行代码时,控件会到达Visual Studio中的断点。

“外部程序”看起来像是启动了一个单独的进程,而VS没有挂接该进程。如果足够长,您应该在新进程完成之前攻击它。去调试=>选项=>取消选中仅启用我的代码选项以检查它是否有用。谢谢@bradbury9您完全正确。正如我在文章中提到的,我正在使用IronPython从Robot框架调用C#方法。我使用robot.exe(robot Framework executable)作为我的外部程序(在VisualStudio中),我希望我的断点能在C#project下命中。不过,看起来Robot框架在执行期间在内部启动ipy.exe进程,并通过ipy进程调用C#方法。这意味着我必须将ipy.exe进程附加到我的C#项目中,这样每当遇到断点时,控制权就会转到Visual Studio。嗨,Gagan,感谢您的共享,请将您的答复标记为答案,这将帮助其他社区成员更容易搜索此有用信息,这只是一个提醒:)