Debugging 使gdb同时计算多行或复合if语句

Debugging 使gdb同时计算多行或复合if语句,debugging,gdb,Debugging,Gdb,直到几周前我开始使用ArchLinux之前,gdb都会自动评估多行if语句。对于这样的情况: 39523 if ((RM != NULL) && 39524 (RM->DefaultC != NULL) && 39525 (MSched.RemapC != NULL) && 39526 (RM->DefaultC->FType != mqftRouting) && 3952

直到几周前我开始使用ArchLinux之前,gdb都会自动评估多行if语句。对于这样的情况:

39523   if ((RM != NULL) && 
39524       (RM->DefaultC != NULL) &&
39525       (MSched.RemapC != NULL) &&
39526       (RM->DefaultC->FType != mqftRouting) &&
39527       (RM->DefaultC != MSched.RemapC))
39528     {
...
...
39728     } /* END if ... */
39732   if (ClassFound != TRUE)
39733     {
我在gdb中看到的唯一一件事(除非我显式地执行了list命令)是第一行:

39523     if ((RM != NULL) && 
(gdb)      
现在我看到了以下几点:

39523     if ((RM != NULL) && 
(gdb) 
39524         (RM->DefaultC != NULL) &&
(gdb) 
39523     if ((RM != NULL) && 
(gdb) 
39525         (MSched.RemapC != NULL) &&
(gdb) 
39523     if ((RM != NULL) && 
(gdb) 
39526         (RM->DefaultC->FType != mqftRouting) &&
(gdb) 
39523     if ((RM != NULL) && 
(gdb) 
39527         (RM->DefaultC != MSched.RemapC))
(gdb) 
39523     if ((RM != NULL) && 
(gdb) 
39732     if (ClassFound != TRUE)
我可以看到这种行为是可取的,但我更希望能够配置它。有人知道这是否可能吗?我使用的是GDB6.7.1,它是从源代码构建的。在我切换到Arch之前,我在我的Ubuntu系统上使用的正是这个版本,它是从同一个源代码构建的

编辑:我在使用gdb--tui时看到了相同的行为

gcc—我的arch系统上的版本:

gcc (GCC) 4.4.2
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
gcc——我的ubuntu系统上的版本:

gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

这是gcc的问题,而不是gdb的问题。gcc正在为条件中的每一行发出调试信息。我不确定这个更改是故意的还是gcc的错误。

这是gcc的问题,而不是gdb的问题。gcc正在为条件中的每一行发出调试信息。我不确定这个更改是故意的还是gcc错误。

您的GDB输出与源代码不匹配。请您剪切/粘贴实际的GDB输出。另外,这可能与您使用的GCC版本有关,请确定它是什么。我明天上班时会这样做,我今天出去了。您的GDB输出与您的源代码不匹配。请您剪切/粘贴实际的GDB输出。另外,这可能与您使用的GCC版本有关,请确定它是什么。我明天上班时会这样做,我今天出去了。