Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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# visualstudio发布应用程序中的调试_C#_Debugging_Visual Studio 2012 - Fatal编程技术网

C# visualstudio发布应用程序中的调试

C# visualstudio发布应用程序中的调试,c#,debugging,visual-studio-2012,C#,Debugging,Visual Studio 2012,我有一个应用程序的发布版本(需要一些批处理文件才能安装和运行)。我随身带着一份源代码。为了查看每个事件的路径(了解程序),我现在正在安装应用程序,同时构建源代码,然后将所有DLL和PDB(以便调试器可以映射到我的代码)从调试文件夹复制到程序文件,然后运行应用程序。由于我在源代码中放置了diagnostics.debugger.launch,所以我能够调试我的版本。 我这样做是因为,我无法直接从bin\debug执行和测试项目,因为它有一些依赖项(批处理文件参数),因此我安装的是已发布的版本。我必

我有一个应用程序的发布版本(需要一些批处理文件才能安装和运行)。我随身带着一份源代码。为了查看每个事件的路径(了解程序),我现在正在安装应用程序,同时构建源代码,然后将所有DLL和PDB(以便调试器可以映射到我的代码)从调试文件夹复制到程序文件,然后运行应用程序。由于我在源代码中放置了diagnostics.debugger.launch,所以我能够调试我的版本。
我这样做是因为,我无法直接从bin\debug执行和测试项目,因为它有一些依赖项(批处理文件参数),因此我安装的是已发布的版本。我必须找出代码中的每个事件路径(因为我是这家公司和.NET的新手)。有没有更简单的方法(比如intellitrace…这对我的情况有帮助吗?)谢谢。

欢迎使用SO!更多的信息会有所帮助。程序在做什么,你想解决什么问题,等等

至于跟踪执行路径,有很多方法可以实现您想要的。以下是几点建议:

  • 记录启动输入,并使用这些输入在开发环境中调试程序。可能无法根据其他外部依赖项工作
  • 将每个方法的条目记录到一个文件中。这将让您看到执行路径。这对于实现旧式的方法来说是非常俗气的,但是您可以使用免费版本的来编写一次日志代码,并根据需要在给定的方法上重用它
  • 使用一个仪器平台来了解正在发生的事情
  • 使用跟踪侦听器跟踪事件执行。查看Trace.Listeners.Add()。创建侦听器后,可以调用Trace.Write或Trace.WriteLine向跟踪添加信息。这涉及到大量手动将跟踪信息输入到方法中,但如果您感到绝望,您可以这样做。我更喜欢像PostSharp这样的面向方面的解决方案,但无论出于何种原因,您可能没有这种选择
快速示例:(同样,不建议使用此方法…)

样本输出:

启动
输入traceMe一次
做一些工作。
输入tracemeagain
做一些工作。
再次退出TraceMeet
ExitingTraceMeOnce

包装纸

欢迎来到SO!你能澄清你所说的“找出每一条执行路径”是什么意思吗?这是给你的任务吗?或者你这样做是为了更熟悉软件?您是否正在尝试确定应用程序的性能?请与团队成员交谈,他们已经知道如何调试应用程序。我们没有。不要羞于向你的团队成员寻求帮助,他们希望你尽快跟上进度。寻求他们的帮助并不会让你显得无能,反而会让你显得渴望学习并成为团队中一名有效的成员。那是件好事,谢谢你接受。我很想知道更多关于你的问题和你最终采取的方法。如果您有时间,请告诉我们。
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--;
        }
    }
}