2009-12-02 2 views
1

До тех пор, пока я не начал использовать Arch linux пару недель назад, gdb будет оценивать многострочные if-заявления атомарно. Поэтому для условия, как это:Создание 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  { 

Единственное, я хотел бы видеть в БГД (если я явно не сделал команду список) был в первой строке:

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.

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

Gcc --version на моей системе арки:

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. 

НКУ --version на моей системе 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. 
+0

Ваш выход GDB не соответствует вашему источнику. Не могли бы вы вырезать/вставить * фактический * выход GDB. Кроме того, это, вероятно, связано с версией GCC, которую вы использовали, пожалуйста, определите, что это такое. –

+0

Я сделаю это на работе завтра, сегодня я отсутствовал. – alesplin

ответ

1

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

Смежные вопросы