【问题标题】:Testing if a gdb convenience variable is defined测试是否定义了 gdb 便利变量
【发布时间】:2019-03-16 04:08:16
【问题描述】:

有没有办法测试 gdb 中是否设置了便利变量?

例如:

(gdb) 如果 $_exitcode == 0 >退出 >结束 相等测试中的类型组合无效。 (gdb) p $_exitcode $1 = 无效

$_exitcodevoid,因为直到程序终止才设置它。最接近的可用构造是 init-if-undefined,但这需要将变量设置为某个标记值并针对该值进行测试。

【问题讨论】:

    标签: gdb


    【解决方案1】:

    由于正常的进程退出代码介于 0 到 255 之间,我建议如下:

    init-if-undefined $_exitcode = -1
    if ($_exitcode != -1)
      quit
    end
    

    【讨论】:

      【解决方案2】:

      我有同样的问题..据我所知,您无法检查是否已设置变量在 GDB 中..您可能可以通过 python 运行它,并让整个脚本以这种方式运行,但我不确定 GDB 中的 python 脚本是持久的还是一直在运行。 你可以做类似的事情..

      init-if-undefined $_exitcode = 1
      if $_exitcode == 0
      quit
      end
      end
      

      【讨论】:

        【解决方案3】:

        你可以在 gdb 中定义一个命令做你想做的事,如图所示:

        (gdb) define CheckDefined
        Type commands for definition of "CheckDefined".
        End with a line saying just "end".
        >set $CheckDefined_DefinedOr1 = $arg0
        >init-if-undefined $CheckDefined_DefinedOr1 = 1
        >set $CheckDefined_DefinedOr2 = $arg0
        >init-if-undefined $CheckDefined_DefinedOr2 = 2
        >set $arg1 = ($CheckDefined_DefinedOr1 == $CheckDefined_DefinedOr2)
        >end
        

        现在您已经定义了 CheckDefined,您可以如图所示使用它来检查给定的便利变量(在本例中为 $fluffy)是否已定义,并将检查结果存储在 $fluffyIsDefined 中:

        (gdb) CheckDefined $fluffy $fluffyIsDefined
        (gdb) print $fluffyIsDefined
        $17 = 0
        

        如果您现在定义之前未定义的变量 $fluffy,CheckDefined 将产生不同的结果:

        (gdb) set $fluffy = 92
        (gdb) CheckDefined $fluffy $fluffyIsDefined
        (gdb) print $fluffyIsDefined
        $18 = 1
        

        使用该函数的好处是您不必破坏要检查的变量。所以要重写你原来的结构:

        (gdb) CheckDefined $_exitcode $exitCodeIsDefined
        (gdb) if (! $exitCodeIsDefined)
         >quit
         >end
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-26
          • 2011-11-26
          • 2020-10-25
          • 2012-12-02
          • 2010-09-22
          • 2011-12-07
          相关资源
          最近更新 更多