2016-07-01 51 views
6

Natknąłem się na funkcję automatycznego wyświetlania gdb, która jest dość potężna i wygodna. Po wywołaniuGDB: Jak usunąć zmienną z automatycznego wyświetlacza

(gdb) display/i $pc 
(gdb) display $rax 

obserwowanym wartości wyświetlane są automatycznie po każdym kroku:

(gdb) si 
0x0804805e in print_loop_start() 
2: $rax = 0 
1: x/i $pc 
=> 0x804805e <print_loop_start+6>: mov 0x4(%ebp,%eax,4),%ecx 

Ale jak mogę „unwatch” wartość w $ Rax, jeśli nie są już przedmiotem zainteresowania?

+1

"Użyj" niewyświetl ", aby anulować wcześniej wykonane żądania wyświetlania." – dbrank0

Odpowiedz

10

Gdb pomoc dla wyświetlacza mówi:

"Użyj undisplay anulować żądania wyświetlania wcześniej wykonane."

Więc jeśli nie display a, potem display b i display c gdb dadzą numery do tych wniosków (które można zobaczyć wydając powtórkę bez argumentów). Następnie możesz użyć tych numerów z undisplay.

przykład:

(gdb) display a 
1: a = 32767 
(gdb) display b 
2: b = 0 
(gdb) display c 
3: c = 0 
(gdb) undisplay 2 
(gdb) step 
6  b = 2; 
1: a = 1 
3: c = 0 

Szczegóły w gdb documentation.

+1

'delete display 1' również działa. –