我有一个旧的VBScript项目我需要调试,由于它的复杂性,我看不到从哪里调用一些函数。是否有任何VBScript替代PHP的debug_backtrace函数或类似函数查看堆栈跟踪?VBScript替代PHP的debug_backtrace
回答
如果发生错误,VBScript不会引发堆栈跟踪信息的任何异常。
@Runtime,万一发生错误,VBScript会抛出一个Err对象。例如:
例如:下面的脚本会抛出'除以零'错误&脚本不会被执行得更远。
Msgbox 5/0
Msgbox "Hello" 'This will not execute
上的错误:
VBScript使用 '上的错误继续下一步',这将启动错误处理程序语句。这意味着,如果错误只是跳过当前行并转到下一行。 'On Error GoTo 0'禁用当前错误处理程序。 (就像你正在关闭'if'块)。请查询 MSDN了解更多详情。
考虑这个例子。
On Error Resume Next
Msgbox 5/0
Msgbox "Hello" 'This will say "Hello"
Msgbox Err.Number '11
Msgbox err.Description 'division by zero
On Error GoTo 0 'stops the error handler. any run time error after this will stop the program
如果没有发现错误,Err.Number将为0。
所以,你可以拥有的功能像
Function Divide(ByVal A, ByVal B)
On Error Resume Next
Dim Result
Result = A/B
If Err.Number = 0 Then
Divide = Result
Else
Divide = "Infinite"
End If
On Error GoTo 0
End function
记住这一点 - 因为它简单地进入到下一行的错误的情况下,
On Error Resume Next
If 5/0 Then
Msgbox "???" 'This will get executed. It does not go to Else
Else
Msgbox "Hello" 'It will not show this
End If
On Error GoTo 0
谢谢,事情是我没有错误,我只是有异常大量的函数调用,造成不可接受的开销。一些函数似乎在循环中被调用。由于该项目相当庞大,我不得不对100个文件进行分类,以确定它从哪里被调用。所以不幸的是,我没有任何错误,我可以去(这太容易了:) – Milan 2015-01-20 21:05:45
'MsgBox()'不会在经典ASP中使用'Response.Write()'代替。这些示例假定您编写独立的VBScript或客户端VBScript。实际上使用它会导致一个异常本身隐藏实际问题。 – Lankymart 2015-01-20 22:33:55
@Lankymart ...那我怎么用它?假设我在函数中插入response.write(“message”)语句并运行应用程序。我将在屏幕上方显示23条“消息”,我知道它被称为23次,但我仍然不知道从哪里... – Milan 2015-01-20 23:21:58
您需要配置IIS发送错误浏览器。它在IIS 7 - 8上的经典ASP设置下。您可以选择在本地请求或所有请求上向浏览器发送错误。通常用于本地的开发箱测试。它会告诉你什么行号你错过了。
至于获得更多关于哪些功能会减慢应用程序的细节。使用经典的asp,您需要编写自己的时间代码来衡量这些指标。
在这一点上所以,很多的搜索后,我会回答我的问题如下: VBScript是比较老的语言,似乎不具有任何内置函数/法或其他方法都将可靠地返回函数调用(类似PHP的debug_backtrace的堆栈跟踪()功能。
我设法用一个简单的自定义功能logBreakPointToFile跟踪执行路径()我写的,我放在整个的100S .asp文件(直接和间接地引用所涉及的方法 - 嵌套)。这给了我一个非常混乱的想法实际发生。然而,花费我很多的准备。时间和清理时间,这是我首先想要避免的。
如果有人找到更好的解决方案,请分享。
THX
- 1. SQL Server代理VBScript替代
- 2. 指定debug_backtrace()PHP中的变量
- 3. VBScript中Msgbox的替代方案
- 4. PHP - debug_backtrace()崩溃 - 我该怎么办?
- 5. 替代cron的PHP代码
- 6. Gridview替代php?
- 7. 替代PHP头?
- 8. PHP call_user_func替代
- 9. PHP替代session_is_registered
- 10. 替代在PHP
- 11. PHP:替代SESSIONS
- 12. PHP getallheaders替代
- 13. cfusion_encrypt php替代
- 14. PHP - Filter_var替代?
- 15. PHP替代trac?
- 16. PHP include()替代?
- 17. PHP多个替代
- 18. 用PHP代替HTML
- 19. 替代执行PHP?
- 20. 替代eregi()在PHP
- 21. PHP/MySQL替代WordPress?
- 22. php替代ip2long/long2ip
- 23. 多个程序的启动和替代的SendKeys在VBScript
- 24. PHP的替代问题
- 25. PHP写的替代OpenGrok
- 26. ASP.NET(C#)的Define()(PHP)替代
- 27. PHP的preg_replace:限制替代
- 28. 替代的strtotime在PHP 5.1.6
- 29. 替代普通的PHP类
- 30. VBScript的正则表达式负面Lookbehind替代方案
威尔[Request.ServerVariables( “SCRIPT_NAME”)](https://msdn.microsoft.com/en-in/library/ms524602%28v=vs.90%29.aspx)帮助?它会显示正在执行的文件的名称(不是包含文件的名称) – SearchAndResQ 2015-01-22 06:41:28
......好的思维,thx。但只给我当前的脚本页面名称,而不是来自其他地方的实际函数调用引用。 – Milan 2015-01-22 17:48:17