ramdebugger和tcl / c ++可加载模块的问题

时间:2010-08-27 00:17:49

标签: tcl

我有一个很好的功能齐全的模块(使用tcl / cpp),它工作正常。

我想使用ramdebugger来调试使用该模块的脚本

当我进入

load mylib.so
command1_from_lib xx
command2_from lib yy

if(say)command2返回错误,然后ramdebugger死掉

[paul@paul-es5 ramdebugger7.7.1]$ ./ramdebugger 
alloc: invalid block: 0x999c058: 0 0
Aborted

它在libtcl / ResetObjResult

中死掉
if ((objResultPtr->bytes != NULL)
        && (objResultPtr->bytes != tclEmptyStringRep)) {
    ckfree((char *) objResultPtr->bytes);
}

我怀疑全局tclEmptyStringRep是否存在混淆。我认为starkitted(?)ramdebugger有一个,动态加载的libtcl有一个不同的 - 字节指针应逻辑上指向一个空字符串,但那里的值与gdb为全局显示的值不匹配

我是一个tcl noob,我需要任何帮助。或者,可以使用不同调试器的建议

编辑:修复

使用tclStub推迟扩展和tcl运行时之间的链接。

1 个答案:

答案 0 :(得分:1)

这听起来非常像我的错误,而不是这个网站可以回答的问题。您应该联系ramdebugger people,看看他们是否可以提供帮助。

但是,对于一般的Tcl调试,您还可以查看ActiveState生成的工具是否有帮助; IIRC您可以免费试用,看看他们是否可以取得任何进展。 (我自己,我是 put-lots-of - printf - 在调试学校打电话,所以我不是小时候的孩子。)