[hellogcc] Re: [hellogcc] 避免未初始化变量让gdb+pretty printer崩溃的2个补丁

  • From: Liu <proljc@xxxxxxxxx>
  • To: hellogcc@xxxxxxxxxxxxx
  • Date: Tue, 29 Nov 2011 08:07:00 +0800

你应该发到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
>
>

Other related posts:

  • » [hellogcc] Re: [hellogcc] 避免未初始化变量让gdb+pretty printer崩溃的2个补丁 - Liu