2010-06-06 11 views
7

Podczas debugowania niezarządzanego projektu C++ w Visual Studio 2008, czasami chcę zobaczyć wartość zmiennej globalnej. Nie mamy ich dużo, ale te, które są tam wszystkie zadeklarowane w przestrzeni nazw nazywanej "globalną". na przykładWyświetlanie zmiennych globalnych z podziałem na wielkości w debugerze Visual Studio?

namespace global 
{ 
    int foo; 
    bool bar; 

    ... 
} 

Problemem jest to, że gdy kod zostanie zatrzymana na punkt przerwania, podpowiedzi domyślne debugowania (od wskazując na nazwy zmiennej) i quickwatch (shift-F9 na nazwę zmiennej) nie biorą pod nazw rozważyć, a zatem nie będzie działać.

Mogę na przykład wskazać "foo" i nic nie wyjdzie. Jeśli przestawię-f9 na foo, wywoła on szybki zegarek, który następnie mówi: "CXX0017: Błąd: symbol" foo "nie został znaleziony". Mogę to obejść poprzez ręczną edycję nazwy zmiennej w oknie szybkiego podglądu, aby poprzedzić ją ciągiem "global ::" (co jest uciążliwe, biorąc pod uwagę, że musisz to zrobić za każdym razem, gdy chcesz skorzystać z funkcji szybkiego podglądu), ale nie ma poprawki dla etykiety narzędzia że mogę pracować. Ustawienie "domyślnej przestrzeni nazw" właściwości projektu nie pomaga.

Jak mogę powiedzieć debuggerowi VS, aby używał przestrzeni nazw, która już zna deklarowaną zmienną (ponieważ ma tam deklarację), lub, alternatywnie, powiedz jej domyślny obszar nazw, aby wyszukać zmienne, jeśli ich nie znajduje?

Mojego google-fu nie udało się znaleźć odpowiedzi. This report zawiera ten sam problem, ze stwardnieniem rozsianym stwierdzającym, że jest "z założenia", ale mimo to mam nadzieję, że jest jakiś sposób obejścia tego problemu (być może dzięki sprytnemu użyciu autoexp.dat?)

+1

Masz szczęście, że nazw ma nazwę. Jeśli zmienne znajdują się w nienazwanym obszarze nazw, nie można nawet zobaczyć ich wartości w debugerze (zobacz http://stackoverflow.com/questions/1334989/debugging-data-in-anynomous-namespaces-c). – Patrick

Odpowiedz

1

Używanie pełnego imienia i nazwiska, w tym przestrzeń nazw w źródle rozwiązała to dla mnie.

np .: pisać

global::bar = (global::foo==0) 

zamiast

bar = (foo==0) 
Powiązane problemy