调试:获取执行路径

时间:2015-02-05 17:15:16

标签: c#

我想知道是否有办法返回Visual Studio在程序运行时所采用的路径。例如,如果不设置断点,是否可以确切地知道当我单击我创建的Web应用程序上的按钮时会发生什么?就像我点击了一个有动作的按钮一样,是否有一些Visual Studio可以吐出的信息告诉我发生了什么? (其功能在于使用哪些文件等。基本上是“代码路径”)。

要添加我的问题,我想使用这样的东西来帮助调试问题。我想确切知道当我执行某种操作时发生了什么(在我的示例中按下按钮)。如果我知道每个“代码路径”,我可以更好地解决我遇到的问题。

3 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,那么您正在寻找Environment.StackTrace

  

StackTrace属性按反向时间顺序列出方法调用,即首先描述最近的方法调用,并为堆栈上的每个方法调用列出一行堆栈跟踪信息。但是,由于优化期间发生的代码转换,StackTrace属性可能不会报告与预期一样多的方法调用。

您可以做的其他事情是添加调试日志条目以了解正在进行的操作。它可能更有用,因为您可以添加额外的自定义数据。

不确定您的项目是否已有日志框架。如果你没有任何log4net可能是一个不错的选择

答案 1 :(得分:0)

将我的评论转换为答案,以便有一个解决原始问题的答案:

使用性能分析器,它旨在观察执行路径(通常是为了帮助您找到瓶颈等,但它也适用于您的目的)。一个好的性能分析器可以让你深入了解任何方法,它所调用的方法,频率等等。

答案 2 :(得分:0)

您可以将调用堆栈结果打印到Visual Studio中的输出窗口。您仍然需要使用断点,但那些不会停止应用程序的断点。要做到这一点:

  1. 如果要打印出堆栈,请在代码中找到该位置。例如,在按钮点击处理程序的末尾。
  2. 在那里放置一个断点。
  3. 右键单击断点。从上下文菜单中选择" When Hit ..."选项。
  4. 在显示的窗口中选择"打印消息:"复选框。它将启用文本框。在文本框中输入:$CALLSTACK
  5. 检查"继续执行"复选框,如果您不想在打印结果时停止执行。
  6. 我不记得"什么时候打..." Visual Studio的Express版本中提供了该选项。

    还可以打印出一些其他数据而不会破坏执行,例如:上一个功能,进程ID等。详细信息实际上可以在" Hit Hit ..."窗口。