惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - 回头重来

开发语言排名 释放C盘空间 窗体最小化后隐藏了再显示的小问题 用脚本修改数据库名和逻辑文件名 第一次尝试NHibernate winForm中使用log4net [转]SQL Server 管理技巧 [转]SQL Server开发技巧 [转]十二个笑话中的人生哲理 [转]Google Talk 的几点使用技巧 Google Talk Themes 需要GMail邀请的朋友请进来 将15位的身份证号码升级到18位的关键是校验码 让VBCommenter支持自定义用户名 简单的方向按钮 如何改变TextBox的高度 增强TextBox 增强TextBox (可以对TextBox的内容进行自我验证的自定义控件) 看图测试心理承受力(转载)
在被调用函数中利用StackTrace确定是被哪个函数调用的
回头重来 · 2005-04-24 · via 博客园 - 回头重来

代码很简单,如下

Module Module1
    
Public Sub ReportPosition(ByVal msg As String)
        
Dim strace As New StackTrace(True)
        
Dim frame As New StackFrame
        frame 
= strace.GetFrame(1'0表示调用堆栈的最里层(本函数),1表示上一层也就是调用ReportPosition()的函数, 
        MsgBox("错误信息:" & msg & ControlChars.CrLf & "位置:" & frame.ToString)
        
'可以将frame.ToString()的内容保存到文件
        '在trycatch中调用该方法可以方便跟踪异常位置
    End Sub

End Module


    
'调用
    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        
Try
            
'do something
            Dim i As Int32 = 0
            i 
= 1 / i
        
Catch ex As Exception
            ReportPosition(ex.Message)
        
End Try

    
End Sub


不过只有在Debug模式并且有.pdb文件的情况下才能获得调用函数的所在的文件和行号。

刚才看下面的文章想到的

Find out what's closing your application
他的代码如下:

Private Sub Form1_Closing(ByVal sender As Object, _
  
ByVal e As System.ComponentModel.CancelEventArgs) _
  
Handles MyBase.Closing
    
Dim O As System.Diagnostics.StackTrace = _
           
New System.Diagnostics.StackTrace(True)
    
Dim F As System.Diagnostics.StackFrame

    F 
= O.GetFrame(7)

    
Select Case F.GetMethod.Name.ToString
        
Case "SendMessage"
            MsgBox("Closing because of call in code.")
        
Case "CallWindowProc"
            MsgBox("Closing because of system menu click.")
        
Case "DispatchMessageW"
            MsgBox("Closing because of Task Manager.")
        
Case Else
            
MsgBox("Don't Know why I'm closing!!??")
    
End Select
End Sub