你应该发到gdb-patches的吧。 2011/11/28 asmwarrior <asmwarrior@xxxxxxxxx>: > 未初始化变量导致gdb python pretty printer崩溃的情况时有发生。 > > 今天想方设法,总算想到了一个勉强的解决办法: > > 一个补丁是在 info locals 命令后,让那些在当前行后定义的(还未初始化的变量)不显示。 > 另外一个补丁,是在用命令 print x, 这个x是一个函数的局部变量,但是这个变量在当前行之后,这样也不显示x。 > > 上面说的当前行,指的是程序暂停的行,例如:某函数: > > void fun() > { > wxString *psty = (wxString*) NULL; > wxString wxStr(L"wxString"); > wxStr += L" Value"; > std::string stdStr("std::string"); > stdStr.append(" value"); > std::map<int, std::string> m; > m[0] = "000"; > m[1] = "111"; > > //当前行在这里*********************** > > wxString& wxStrRef = wxStr; > wxStrRef += L" Ref"; > std::string& stdStrRef = stdStr; > stdStrRef += " Ref"; > > std::list<std::string> l = {"a", "b", "c"}; > std::vector<std::string> v = {"a", "b", "c"}; > std::queue<std::string> q; > q.push("a"); > q.push("b"); > > std::stack<std::string> s; > s.push("a"); > s.push("b"); > } > > 上面的l,v,q变量都是在当前行后定义的变量。 > > 补丁其实很简单,就是当前行和变量定义行的比较,呵呵。 > > 本人对gdb只是粗浅认识,也没有太多事情折腾,附件的两个补丁是在mingw下测试了,呵呵。 > > 没敢往gdb的英文邮件列表发,感觉我这个补丁像个hack。。。。。多半被人鄙视。。。 > > asmwarrior > >