Debugging ';分段错误';在调试expect脚本时

Debugging ';分段错误';在调试expect脚本时,debugging,segmentation-fault,tcl,expect,Debugging,Segmentation Fault,Tcl,Expect,我正在用传统的调试方式调试expect程序,方法是为以下脚本传递-d1标志 #!/usr/bin/expect proc p3 {} { set m 0 } proc p2 {} { set c 4 p3 set d 5 } proc p1 {} { set a 2 p2 set a 5 } p1 使用调试器命令w,我试图查看堆栈帧,并得到以下错误 dinesh@mypc:~/pgm

我正在用传统的调试方式调试
expect
程序,方法是为以下脚本传递
-d1
标志

#!/usr/bin/expect
proc p3 {} {
        set m 0
}
proc p2 {} {
        set c 4
        p3
        set d 5
}
proc p1 {} {
        set a 2
        p2
        set a 5
}
p1
使用调试器命令
w
,我试图查看堆栈帧,并得到以下错误

dinesh@mypc:~/pgms/expect$ expect -D 1 stack.exp 
1: proc p3 {} {
    set m 0 
}

dbg1.0> n
1: proc p2 {} {
    set c 4
    p3
    set d 5
}

dbg1.1> 
1: proc p1 {} {
    set a 2
    p2
    set a 5
}

dbg1.2> 
1: p1

dbg1.3> s
2: set a 2
dbg2.4> 
2: p2
dbg2.5> 
3: set c 4
dbg3.6> w
 0: expect {-D} {1} {stack.exp}
Segmentation fault (core dumped)
dinesh@mypc:~/pgms/expect$ 
我正在使用
expect
5.45版


我执行命令的方式有什么问题吗

为了实现调试跟踪,Expect将手指伸进了Tcl的实现中。特别是,它有Tcl内部使用的一些内部结构的定义的副本(例如,过程和堆栈框架的实现的定义)。然而,这些结构会不时发生变化;我们不会宣布这样的内部实现更改,因为它们不应该对任何其他代码有任何影响,但显然不是这样


总的来说,这是Expect中的一个bug(可能是修复了要添加到Tcl的新C API函数)。为了了解如何解决这一问题,我们不仅需要知道Expect的确切版本,还需要知道Tcl的确切版本(使用
info patchlevel
获得此信息)。

感谢您的解释。与
Expect=5.44.1.15相同的问题;tcl=8.5.7;RHEL=6.10
。修复这个问题会很好,因为Expect调试堆栈跟踪很有用。是否向Expect维护人员提出了一个bug,或者是否有可能对TCL进行反向移植?在尝试使用
w
打印堆栈跟踪时,我遇到了同样的分段错误问题。我的
exp_version=5.45.4
info patchlevel=8.6.9