Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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#_.net_Visual Studio_Visual Studio 2013 - Fatal编程技术网

C# 调试通过资源管理器上下文菜单启动的应用程序

C# 调试通过资源管理器上下文菜单启动的应用程序,c#,.net,visual-studio,visual-studio-2013,C#,.net,Visual Studio,Visual Studio 2013,我有一个C应用程序,当选择某些文件类型时,可以从windows资源管理器上下文菜单启动该应用程序: 我需要能够从第一行代码调试应用程序,即我没有时间启动应用程序并附加到进程。当我从上下文菜单启动应用程序时,是否可以在visual studio中调试应用程序?如果应用程序已在运行,只需选择调试->附加到进程,然后从列表中选择进程 如果您试图调试应用程序的启动代码,则需要尝试另一种方法,因为代码将在您能够连接到进程时完成执行。在这种情况下,如果您能够修改代码,并且听起来像是这样,我建议您在应用程序启

我有一个C应用程序,当选择某些文件类型时,可以从windows资源管理器上下文菜单启动该应用程序:


我需要能够从第一行代码调试应用程序,即我没有时间启动应用程序并附加到进程。当我从上下文菜单启动应用程序时,是否可以在visual studio中调试应用程序?

如果应用程序已在运行,只需选择调试->附加到进程,然后从列表中选择进程

如果您试图调试应用程序的启动代码,则需要尝试另一种方法,因为代码将在您能够连接到进程时完成执行。在这种情况下,如果您能够修改代码,并且听起来像是这样,我建议您在应用程序启动时的某个位置添加此代码:

Debugger.Break();
当进程点击这一行时,它会弹出一个对话框,上面写着你想调试吗?您可以说是,它将附加VisualStudio调试器,并在该行暂停执行

以下是Break方法的文档:


如果应用程序已经在运行,只需选择调试->附加到进程,然后从列表中选择进程

如果您试图调试应用程序的启动代码,则需要尝试另一种方法,因为代码将在您能够连接到进程时完成执行。在这种情况下,如果您能够修改代码,并且听起来像是这样,我建议您在应用程序启动时的某个位置添加此代码:

Debugger.Break();
当进程点击这一行时,它会弹出一个对话框,上面写着你想调试吗?您可以说是,它将附加VisualStudio调试器,并在该行暂停执行

以下是Break方法的文档:


请看一看@huMptyduMpty请看我对Philipp回答的评论您也可以在项目开始选项中为您的exe提供命令行参数并点击F5,除非您当然想验证传递的参数是否正确。@Sandepsingrawat是的,我想检查通过context menuDebug.WriteLine在此类场景中非常有用。您可以使用系统内部的DbgView查看调试输出看看@huMptyduMpty请查看我对Philipp回答的评论您还可以在项目开始选项中为exe提供命令行参数并点击F5,当然,除非您想验证传递的参数是否正确。@SandepsingRawat是的,我想检查通过上下文menuDebug.WriteLine启动时传递给应用程序的参数在此类场景中非常有用。您可以使用Sysinternals中的DbgView查看调试输出这听起来很有希望,但是一旦我添加这行代码并启动我的应用程序,我就会收到一个错误,说明我的应用程序已停止工作;相反,它工作得很好,很高兴你让它工作。我不知道为什么发射有效,但Break不能。。。它们应该都能工作。这听起来很有希望,但是一旦我添加这行代码并启动我的应用程序,我就会收到一个错误,说明我的应用程序已经停止工作。如果Debugger.IsAttached==false Debugger.launch;相反,它工作得很好,很高兴你让它工作。我不知道为什么发射有效,但Break不能。。。它们都应该起作用。