gpt4 book ai didi

c++ - Tcl 脚本非检测调试器使用 Tcl 库和/或 Tcl 内部?

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:50 27 4
gpt4 key购买 nike

我想知道是否可以使用 Tcl 库 API 和/或 Tcl 内部接口(interface)构建 tcl 脚本调试器(我的意思是它们是否包含足够的数据来这样做)。我注意到现有的 tcl 调试器检测 tcl 脚本并使用这个附加层。我的想法是使用 Tcl_CreateObjTrace 来跟踪每个评估的命令,并将其用作检索调用堆栈、局部变量等的点。问题是,在评估时似乎并非所有信息都可以从 API 访问。例如,我想知道当前正在评估哪一行,但 Interp 仅针对顶级评估提供此类信息(iPtr->cmdFramePtr->line 对于程序主体为空) .有人试过这种方法吗?这有意义吗?也许我应该查看 Interp 中的散列条目?任何线索和意见将不胜感激(Tcl 8.5 最好)。

最佳答案

对于非侵入式调试系统,您最好的选择可能是尝试使用执行步骤跟踪(调用跟踪所附加的命令执行期间调用的每个命令)info frame 来实际获取信息。这是一个简单的版本,附加到 source 以便您可以观看整个脚本:

proc traceinfo args {
puts [dict get [info frame -2] cmd]
}
trace add execution source enterstep traceinfo
source yourscript.tcl

为大量输出做好准备。 info frame 外的字典可以有各种相关的条目,比如命令的行号是什么,源文件是什么等信息; cmd 条目是调用命令的未替换源(如果您想要替换版本,请参阅跟踪回调的相关参数,traceinfo以上)。

关于c++ - Tcl 脚本非检测调试器使用 Tcl 库和/或 Tcl 内部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24242399/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com