【问题标题】:Get Visual Basic line number and use in messagebox获取 Visual Basic 行号并在消息框中使用
【发布时间】:2021-12-04 22:27:22
【问题描述】:

我不断地在我的代码中寻找错误,并且我将消息框放置在说明“Line xyz value =”等中。

但是当我更改我的代码时,我不得不不断地推送数字,当我完成时找不到它们,或者到处错过一个。

只是出于好奇,但是当 JIT 调试器中出现错误标志时,它可以告诉我模块和行号。有谁知道我是否可以获得它,以便随着行号的变化,我的消息框也会发生变化?

这将是一个很棒的帮助。我问的原因是因为我在AutoCAD中编程,无法实时调试。

任何帮助将不胜感激。

【问题讨论】:

  • 当你写“追逐错误”时说“错误”——你指的是抛出的异常——或者不会导致程序执行异常的非异常逻辑错误(即非致命错误)?
  • 另外,我可以向您保证,您不需要在代码中添加自己的行号 - 只需使用 Environment.StackTrace - 如果您编译时使用完整符号 (*.pdb) 然后它将在倒数第二行包含调用者的呼叫站点到Environment 的行号。
  • 这是一种取得进步的糟糕方式,谷歌“debug .net autocad add-in”来获得成功。

标签: .net line-numbers


【解决方案1】:

使用CallerLineNumberAttribute 作为MsgBox 包装器参数的属性。

Public Shared Module MyFunctions

    Public Sub MsgBoxWithLineNumber( msg As String, <CallerFilePath> Optional  file As String = Nothing, <CallerLineNumber> Optional  lineNumber As Integer = 0)
        
        Dim msg2 As String = msg & vbCrLf & vbCrLf & file & vbCrLf & "Line " & lineNumber
        MessageBox.Show( msg2, "Error" )
        
    End Sub

End Module

例如:

Public Sub Foobar()

    MsgBoxWithLineNumber( "foobar" )
    

End Sub

会给你这个消息框:

---------------------------
Hi
---------------------------
hello



C:\Users\Me\AppData\Local\Temp\LINQPad6\_voxwvlsv\sonnkr\LINQPadQuery.vb

Line 81
---------------------------
OK   
---------------------------

截图证明(通过 Linqpad):

【讨论】:

  • 冠军。非常感谢。虽然其他建议很好,但通过 Visual Basic 启动和调试的过程并没有按照我想要的方式工作。
猜你喜欢
  • 2020-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多