gpt4 book ai didi

c++ - Tcl_Eval 在错误时返回调用堆栈

转载 作者:行者123 更新时间:2023-11-28 03:23:52 24 4
gpt4 key购买 nike

当使用 Tcl C++ API Tcl_Eval 时,如果它返回 TCL_ERROR,则可以从 Tcl_GetStringResult(interp) 检索错误消息。但是,当执行一堆tcl脚本时,错误消息并没有指出脚本失败的行。

例如:

can't find package foobar
while executing
"package require foobar"
(file "./test.tn" line 5)

Tcl_GetStringResult(interp) 不提供此信息:(文件“./test.tn”第 5 行)。有没有办法像在 tcl 解释器中那样打印出调用堆栈,以便我知道脚本在哪一行失败?

最佳答案

您要查找的信息,错误信息(即堆栈跟踪)位于全局 errorInfo 变量中。可以使用 Tcl_GetVar 检索此信息或其相关功能之一。最好的选择之一是高效的 Tcl_GetVar2Ex(这个名字是一个缓慢发展的 API 的产物):

Tcl_Obj *infoObj = Tcl_GetVar2Ex(interp, "errorInfo", NULL, TCL_GLOBAL_ONLY);

然后使用 Tcl_GetString 将人类可读部分提取为 char *(视为 const)。

关于c++ - Tcl_Eval 在错误时返回调用堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14684761/

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