gpt4 book ai didi

tcl - 如何找到TCL程序的位置?

转载 作者:行者123 更新时间:2023-12-04 07:25:35 27 4
gpt4 key购买 nike

如何在TCL中找到程序(功能)的位置。在位置下,我的意思是在其中声明它的源文件。

我正在尝试读取外部源代码,并且找不到单个过程的声明,例如:

set MSISDNElement [regexp -all -inline {ISDN +[0-9]+} $Command]

if { $MSISDNElement != "" } {
foreach elm $MSISDNElement {
set MSISDNValue [list ISDN [getInternationalFormat [lindex $elm 1]]]
}
}

set EptData [list [lindex $Command 1]]

InitEptData 3
foreach Element $EptData {
SetEptData [lindex $Element 0] [lindex $Element 1]
}

对于函数 InitEptData SetEptData 我找不到任何声明。有人可以更深入地了解TCL,以解释如何解决我所面临的问题吗?提前致谢!

最佳答案

没有通用的答案,因为Tcl允许您动态声明过程,因此它们可能没有实际的文件引用。

已经进行了一些尝试来改善具有定义文件的proc的情况,例如TIP280(在最近的8.5版本中实际上可以作为info frame使用)和TIP 86(仅在讨论中)。

但是,如果简单的grep不起作用,则可以跟踪创建过程或命令的时间。

这发生在不同的地方(Tcl OO可能还会增加一些,但不确定):

  • load命令期间,二进制扩展名向Tcl_CreateCommand或更现代的Tcl_CreateObjCommand注册其命令处理程序功能。
  • source命令期间,加载具有proc定义的文件时
  • 在运行proc命令本身以定义新过程


  • 使用命令 info commandsnamespace children,您可以遍历整个 namespace 树,以获取已执行命令前后的已定义命令列表。因此,您可以创建一个跟踪所有新命令的包装器。有关更多提示,请参见 http://wiki.tcl.tk/1489

    或者,只需使用调试器(如RamDebugger http://www.compassis.com/ramdebugger/Intro)或ActiveStates商业调试器。

    关于tcl - 如何找到TCL程序的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12651549/

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