【问题标题】:Capture debug output generated by 3rd-Party Library in C#在 C# 中捕获由 3rd-Party 库生成的调试输出
【发布时间】:2019-08-28 15:34:55
【问题描述】:

我的 winform 应用程序包含由设备制造商制造的第 3 方 dll(在 .NET 4.5 下),我可以在其中使用其类的公开功能与设备通信。但是由于它们糟糕的设计,一旦任何功能可能失败,就无法从类本身检索到错误详细信息,但是该类以某种方式将一些信息放入控制台窗口(出现在“调试”过滤器下的“输出”选项卡中)以防出现任何错误。

现在的问题是,应用程序只能在被授权通信的计算机上执行,否则课程将无法启动。因此,当我在受信任的计算机上测试我的应用程序时,我只能知道某些函数返回 false,但没有可用的调试信息。我尝试将TraceListener 添加到Trace.Listeners,但this answer 没有显示任何内容,我也尝试了Debug.Listeners,即使我每次手动刷新也没有结果。

System.Diagnostics.Trace.Listeners.Add(new System.Diagnostics.TextWriterTraceListener("debug.txt"));
System.Diagnostics.Trace.AutoFlush = true;

DebugView 也不会生成任何东西,我不知道是因为我不知道如何正确使用这个工具。我刚刚打开它,没有显示我对我的应用程序所做的任何事情。

我非常怀疑这个 DLL 可能只是使用一些 try...catch sn-p 来捕获它自己的异常并输出这些信息,而不是使用 Debug.Write()。我还能做什么?我根本无法在受信任的机器上安装另一个 Visual Studio 并在那里调试我的应用程序。

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

    尝试添加第一次机会异常处理程序:

    using System;
    using System.Runtime.ExceptionServices;
    
        class Example
        {
            static void Main()
            {
                AppDomain.CurrentDomain.FirstChanceException += 
                    (object source, FirstChanceExceptionEventArgs e) =>
                    {
                        Console.WriteLine("FirstChanceException event raised in {0}: {1}",
                            AppDomain.CurrentDomain.FriendlyName, e.Exception.Message);
                    };
    

    How to: Receive First-Chance Exception Notifications

    【讨论】:

      猜你喜欢
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 2017-11-02
      • 1970-01-01
      相关资源
      最近更新 更多