2008-11-19 9 views
6

Mam aplikacji, która jest wrażliwa na katalog, z którego zostanie wywołana - ładuje niektóre pliki przy użyciu względnych ścieżek.Jak ustawić bieżący katalog debugowanego procesu?

Kiedy uruchamiam program za pomocą debuggera, w jaki sposób mogę kontrolować, jaki będzie początkowy katalog bieżący?

Wolałbym unikać dodawania specjalnego kodu do debugowanego programu, aby zadzwonić pod numer chdir; Instynkt podpowiada mi, że debugger powinien w jakiś sposób określić to na zewnątrz, ponieważ i tak jest to z natury ustawienie zewnętrzne.

Używany przeze mnie debugger to TotalView, ale jestem otwarty na odpowiedzi dla innych debugerów systemu Linux, ponieważ mogłoby mi pomóc znaleźć porównywalne ustawienie w telewizji. Mogę określić zmienne środowiskowe podczas wywoływania programu, więc na skowronku próbowałem ustawić PWD, ale bez powodzenia.

Odpowiedz

6

Z GDB początkowy katalog roboczy jest katalogiem, z którego tworzony jest GDB. Tak po prostu uruchom GDB z dowolnego katalogu roboczego. Alternatywnie, podczas gdy program jest uruchomiony, można zmienić bieżący katalog roboczy po prostu wykonując:

(gdb) print chdir("new/working/directory") 

GDB miał także wbudowany polecenia do zmiany procesu katalog roboczy z wiersza GDB:

(gdb) cd new/working/directory 

Nigdy nie użyłem TotalView, ale powinien mieć podobną funkcjonalność do wykonywania kodu (z efektami ubocznymi) z poziomu debuggera.

+0

Wow, to było łatwe. Zmiana katalogu Uruchomiłem TotalView z pracy. Posiada również polecenie "Evaluate" w menu Tools do uruchamiania natychmiastowych poleceń, takich jak chdir. Dzięki za szturchnięcie we właściwym kierunku! –