如何在窗体或控制台中显示类库中变量的内容

本文关键字:变量 类库 显示 窗体 控制台 | 更新日期: 2023-09-27 18:19:07

我有一个c#解决方案,其中包含一个项目和一个由别人编写的类库。类库通过wifi获取GPS数据。该项目在地图上显示处理后的数据。现在,为了调试,我想实时查看类库中一些变量的内容。

我试图使用

System.Diagnostics.Debug.Write(value) 

没有成功。它似乎什么也不做。

我也尝试了"MessageBox.Show(value.ToString())",这是很好的,但它停止了wifi读取并中断了程序,因为我需要按下OK按钮,每次它出现。

此外,我在类库中添加了一个windows窗体(其中包含一个textBox)来打印textBox中的数据,然而,当我写:

Form1.textBox1.Text = value.ToString()

它给了我这个错误:

错误3 'MapNMEA.Form1。' users 'john' documents ' visual Studio 2010'Projects'new ver of map purecom'MapExplorer'MapExplorer'MapNMEA'MapNMEA'SerialPort.cs 184 27 MapNMEA

"MapNMEA"是类库的名称。此外,"MapExplorer"是解决方案和项目的名称。"SerialPort.cs"是类库中的一个文件,我在其中编写了上面的代码。

我的问题是如何实时显示这些变量的内容(它们是3,4个变量),这种行为不应该阻止wifi阅读。我需要这样做,因为一个不太懂编程的电工想要检查GPS设备是否正确地将数据发送到我的计算机。

UPDATE 1:实际上我注意到System.Diagnostics.Debug.Write(value)正在工作,但由于在调试窗口中出现了太多的警告消息,我没有注意到它。现在,如果我可以删除(或隐藏)其他(警告)消息,我将只看到我想要的输出。你知道吗?

如何在窗体或控制台中显示类库中变量的内容

如果您先附加侦听器(Debug.Listeners.Add( new _a_listener_type() )),则Debug.Write应该没问题。

另外,您可能应该知道Debug类上的AutoFlush属性,它决定是否自动调用Flush

Debug.Write应该可以工作-默认情况下,如果您附加了调试器,它将写入Visual Studio中的'Debug'窗口。你确定你找对地方了吗?

如果你想使用表单方法,你需要跟踪打开的表单实例,并给它一个公共方法。例如:

public void WriteDebug(string message) {
  TextBox1.Text += message + Environment.NewLine;
}

那么您可以调用formInstance.WriteDebug(message);

运行调试构建吗?此外,您的代码与文本框不工作,因为textBox1是非公共的

我认为你可能没有搜索正确的位置:是否有什么东西阻止你在去目标之前先在PC上调试?如果没有,你可能应该使用传统的方法:在变量上设置间谍,使用IDE (Visual Studio)来监视它们,等等。

如果你真的需要在没有高级调试工具的情况下在目标上运行,那么你可能想看看一些更简单的解决方案:

  • 将它们记录到一个文本文件(附加或替换,无论你需要什么),然后在手边打开一个查看器
  • 用文本框创建另一个非模态表单,并在每次需要刷新
  • 时调用form2.writeDbgTextBox(String)

确保在发布时删除此代码(例如。通过将它们放在#if DEBUG节中)

无论发生什么,都不要尝试写入现有的消息框!它们是用来弹出和关闭的,而不是与你的代码交互。