使用Tcl库和/或Tcl内部组件的Tcl脚本非插装调试器
Tcl scripts non-instrumenting debugger using Tcl Library and/or Tcl internals?
我想知道是否有可能使用tcl库API和/或tcl内部接口构建tcl脚本调试器(我的意思是如果它们包含足够的数据来这样做)。我注意到现有的tcl调试器使用tcl脚本并使用这个附加层。我的想法是使用Tcl_CreateObjTrace
来跟踪每个评估的命令,并将其用作检索callstack, locals等的点。问题是,在评估时,似乎不是每个信息都可以从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
的相关参数)。
相关文章:
- 如何通过cpp程序运行shell脚本
- 在程序中编写脚本来编写和编译代码
- 如何在c++中使用system()来运行包含空格的python脚本
- 在cygwin中运行c++脚本时发生错误
- 如何将真正的字符串从python c-api转换为python脚本
- 用于将C++代码转换为 Web 程序集的脚本未终止
- 如何使用C++初始化向量;脚本化值不是数组、指针或矢量错误
- 在原子中使用犰狳与脚本
- 我适合在我的构建系统中使用 shell 脚本而不是AX_CHECK_COMPILE_FLAG吗?
- CANoe - 无法在 CAPL 脚本中打开.dll
- 在从Qt调用的Python脚本中导入OpenCV崩溃
- 将数组/向量发送到 c++ 脚本的 cython 示例
- 脚本的多重定义::LState
- 从C++应用获取PowerShell脚本输出
- 用户控制从 c++ 到 java 脚本的 Webassembly 访问调用
- 使用正在调用TCL脚本的CPP代码的GCC编译
- 使用 TCL 编写嵌入式 SQLite 脚本
- 通过c++控制台提供TCL脚本控制窗口
- 使用Tcl库和/或Tcl内部组件的Tcl脚本非插装调试器
- 如何从.cc文件中访问TCL脚本中的值