如何找到哪个C函数调用特定的TCL过程?

时间:2014-01-16 12:54:39

标签: c linux tcl stack-trace

我有一个代码库,它有C和TCL,C函数重复调用tcl proc。

我想调试代码,为此我需要知道哪个C函数正在调用特定的TCL过程。

我试过这个:TCL stack trace

但它仅为TCL部分提供堆栈跟踪。是否有可能从TCL proc中找到C代码的堆栈跟踪?

1 个答案:

答案 0 :(得分:3)

如何在调试器中运行代码,将断点设置为Tcl_Eval()(或者C代码用来调用Tcl的任何方法)然后让程序调用那段Tcl代码然后检查堆栈?

您需要C代码的调试版本(带符号);调试版本的Tcl运行时也会使堆栈跟踪更容易理解。

FWIW,我找不到任何已发布的API来遍历堆栈跟踪here,所以可能它不存在。而且,为了遍历C端的堆栈,Tcl运行时需要类似libunwind的东西,而AFAIK Tcl没有像这样的内置。