Заставить GDB вычислять многострочное или составное выражение if сразу - PullRequest
1 голос
/ 03 декабря 2009

До тех пор, пока я не начал использовать Arch linux пару недель назад, gdb мог бы оценивать многострочные выражения, если бы они были атомарными. Так что для условия, подобного этому:

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 (если я явно не выполнил команду списка), это первая строка:

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)

Я вижу, что такое поведение желательно, но я бы предпочел иметь возможность настроить его. Кто-нибудь знает возможно ли это? Я использую GDB 6.7.1, собранный из исходного кода. Я использовал эту точную версию, собранную из того же источника, в моей системе Ubuntu, прежде чем перейти на Arch.

Редактировать: я вижу то же поведение при использовании gdb --tui

gcc - версия моей архивной системы:

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.

1 Ответ

1 голос
/ 24 мая 2013

Это проблема с gcc, а не с gdb. gcc выдает отладочную информацию для каждой строки в условии. Я не уверен, было ли это изменение преднамеренным или это ошибка gcc.

...