我有应用程序的发行版本(需要一些批处理文件才能安装和运行)。我有一个与我的源代码副本。为了查看每个事件的路径(了解程序),我现在正在做的是安装应用程序,同时构建我的源代码,然后复制所有的dll和pdbs(以便调试器可以映射到我的代码)从我的调试文件夹编程文件,然后运行应用程序。由于我在源代码中放置了diagnostics.debugger.launch,因此我能够调试我的版本。 我这样做是因为我无法直接从我的bin \ debug执行和测试项目,因为它有一些依赖项(批处理文件参数),因此我正在安装发行版本。我必须找出我的代码中的每个事件路径(因为我对这家公司和.NET都是新手)。有没有更简单的方法(如intellitrace ...是否会帮助我的情况?)谢谢。在visual studio发行版应用程序中调试
0
A
回答
1
欢迎来到SO!更多的信息会有帮助。什么是程序在做什么,你想解决什么问题,等等......
只要跟踪执行路径,有很多方法可以做你想做的事情。只需几点建议:
- 记录启动输入并使用相同的输入在开发环境中调试程序。取决于其他外部依赖项可能无法工作。
- 将每个方法的条目记录到文件中。这会让你看到执行路径。这对于实现老式的方式非常不利,但是您可以使用免费版本PostSharp中的OnMethodBoundaryAspect之类的代码编写一次记录代码,并根据给定方法的需要重用它。
- 使用诸如Gibraltar之类的仪器平台来了解正在发生的事情。
- 使用Trace Listener跟踪您的事件执行情况。看看Trace.Listeners.Add()。一旦你创建了一个监听器,你可以调用Trace.Write或者Trace.WriteLine来为这个跟踪添加信息。这涉及到很多手动将跟踪信息输入到您的方法中,但如果您绝望,可以这样做。我更喜欢像PostSharp这样的面向方面的解决方案,但是无论出于何种原因,您可能都没有这个选项。
快速样品:(同样,这种方法不推荐...)
using System.Diagnostics;
using System.IO;
namespace TrackingExecutionPath
{
internal class Program
{
private static void Main(string[] args)
{
var myFile = File.Create(@"C:\Application.log");
Trace.Listeners.Add(new TextWriterTraceListener(myFile));
Trace.WriteLine("Starting up");
var tracer = new Tracer();
tracer.TraceMeOnce();
Trace.WriteLine("Wrapping up");
Trace.Flush();
}
}
internal class Tracer
{
public void TraceMeAgain()
{
Trace.IndentLevel++;
Trace.WriteLine("Entering TraceMeAgain");
Trace.WriteLine("Doing some work.");
Trace.WriteLine("Exiting TraceMeAgain");
Trace.IndentLevel--;
}
public void TraceMeOnce()
{
Trace.IndentLevel++;
Trace.WriteLine("Entering TraceMeOnce");
Trace.WriteLine("Doing some work.");
TraceMeAgain();
Trace.WriteLine("Exiting TraceMeOnce");
Trace.IndentLevel--;
}
}
}
输出示例:
启动了
进入 TraceMeOnce
做 一些 工作。
进入 TraceMeAgain
做 一些 工作。
退出 TraceMeAgain
退出 TraceMeOnce
结束语 了
+0
感谢您的接受。我很想知道更多关于你的问题和你所采取的方法。让我们知道你是否有时间。 –
相关问题
- 1. Visual Studio调试应用程序如eclipse
- 2. Visual Studio在应用程序启动时进行远程调试
- 3. 在发布模式下调试Visual Studio Web应用程序
- 4. 使用visual studio多线程应用程序进行调试
- 5. 在Visual Studio外运行的调试应用程序
- 6. 如何在Visual Studio中调试库的发行版本
- 7. 您正在MS Visual Studio中调试xyz.dll的发行版本?
- 8. 在Visual Studio中调试MapReduce程序
- 9. 在Visual Studio中调用C#命令行应用程序的调试会话
- 10. 使用visual studio在php应用程序中调试javascript
- 11. 在经典ASP调试中禁用Visual Studio 2012中的应用程序调试
- 12. 未在Visual Studio中调试时,应用程序挂起
- 13. 在Visual Studio 2010中调试Web应用程序令人讨厌
- 14. 在Visual Studio中调试Azure应用程序
- 15. 在Visual Studio中调试Angular2应用程序代码
- 16. 在Visual Studio 2008中调试Web应用程序
- 17. 在Visual Studio中调试WebApi不会返回MVC应用程序
- 18. OCCI C++应用程序的Visual Studio调试运行时错误
- 19. Visual Studio 2017,无法调试或运行应用程序
- 20. 无法在Visual Studio调试应用程序在2010年后安装Visual Studio 2013
- 21. Android Studio:运行/调试版本的应用程序
- 22. Visual Studio在远程调试Cordova iOS应用程序时挂起
- 23. 如何禁用F12调试Visual Studio 2012中的应用程序
- 24. 使用Visual Studio中的子域调试mvc web应用程序?
- 25. XamlParseException在使用Visual Studio 2015调试WPF应用程序时
- 26. WPF应用程序调试 - visual studio退出调试,运行.exe很好
- 27. 使用Visual Studio 6.0从XP远程调试NT应用程序
- 28. 如何在Visual Studio代码中运行调试Django应用程序?
- 29. 如何从Visual Studio调试器中释放应用程序?
- 30. 在Visual Studio 2010中调试由C++程序调用的Fortran dll
欢迎SO!你能澄清你的意思吗?找出每一个执行路径?这是你给的任务吗?或者你是否正在这样做以更熟悉该软件?您是否想要确定应用程序的[圈复杂度](http://en.wikipedia.org/wiki/Cyclomatic_complexity)? – Derek
与团队成员交谈时,他们已经知道如何调试应用程序。我们没有。不要害羞地向你的团队成员寻求帮助,他们*希望*尽快加快速度。要求他们的帮助并不会使你听起来不够健全,这使你听起来渴望学习,并成为团队的有效成员。这是好事。 –