W ostatnich dniach niektórzy użytkownicy zauważyli kod błędu podczas korzystania z debugowania gdb ns2. Ten problem może powstać z kilku powodów. Porozmawiajmy o tym teraz.
Zalecane
Wycieki pamięci
- OTcl
OTcl, w szczególności TclCL, pozwala skutecznie aktywować nowe obiekty,jednak w rezultacie nie planuje oferować niesamowitej zbiórki śmieciMechanizm dla tych przypisanych stylów. To też może być łatweniezamierzony wyciek pamięci.Ważne: akcesoria takie jak dmalloc purifynie może wykryć wycieku pamięci wraz z powyższym typem.Rozważmy na przykład ten prosty skrypt OTcl ns:
zdefiniuj [nowy symulator]ponieważ niedawno wstawiłem 0 {$ iSpodziewasz się, że nasz czas pamięci zmniejszy się poŻądana jest pierwsza losowa wartość. Ale przede wszystkim dlatego, że OTcl tego nie osiąga.Flaga odmowy, jeśli często wybierana jest druga zmienna losowa,poprzednia nie zostanie zwolniona i może spowodować wyciek pamięci.Niestety dla wielu generalnie nie ma łatwego rozwiązania bo bzduryPobieranie zadań jest z tym zasadniczo niezgodne.Esprit przez Tcl. Jedynym sposobem, aby to teraz wyróżnić, jest zawszeJawnie napisz każdy obiekt OTcl wyznaczony w skrypcie dotak jak biorą pod uwagę przesunięte obiekty w C / C ++.
- C / C ++
Inną lokalizacją są wycieki pamięci w C/C++. NSto przewodnik też jest znacznie prostszyMiej oko na niektóre narzędzia specjalnie zaprojektowane do tej roli, na przykład:dmalloc i czyste.Ns ma mój specjalny cel
ns-pure
do tworzenia prawdziwych nsPlik wykonywalny. Najpierw upewnij się, że makroPURIFY
jest wns Makefile składa się z każdego poprawnego kompilatoramake ns-pure
.Więcej informacji na temat używania ns z libdmalloc znajdziesz tutaj.
Debugowanie na poziomie Tcl
Ns obsługuje debugger Don Libs Tcl(zobaczyćDokumentacja PostScriptorazŹródło).Zainstaluj program lub zamknij witrynę źródłową wrównolegle z ns-2 i ogólnie sytuacja została ustalona.W przeciwieństwie do opisanego wait, które w wielu przypadkach można znaleźć w dokumentacji tcl-debug,nie wspieramy tego-D Flaga. Aby przez to przejśćDebuger, opublikuj jasny „Debug 1” w skrypcieodpowiednie miejsce.
Polecenie $ ns gen-map wyświetla każdy inny obiekt w surowej postaci.
Jest to naprawdę przydatne, jeśli chodzi o skorelowanie pozycji z tą cechą potężnego obiektu.podał jego imię.Nazwa obiektu to cały deskryptor OTcl, zwykle nazwa be“ _o ### ”. Obiekty Tcl,debugger C++ jest również dostępny dla tego doskonałego, jak dla gdbjak to-> name_.
Debugowanie na poziomie C
Prawie każdy standardowy debugger poradzi sobie z tym zadaniem.
Poniższe makro dla gdb może ułatwić zrozumienie, co jest w środku. przechodzićProcedury, które dużo przyjmują argumenty Tcl TcpAgent :: polecenie ()):
## (jeśli chodzi o argumenty dumpingu przekazywane do Tclzdefiniuj pargvczdefiniuj $ i = 0podczas gdy $ iPołącz debugowanie Tcl i C
(Zawsze fajnie, prawda?)
Jest to bolesna rzeczywistość, która zwykle pojawia się podczas przeglądania danych wyjściowych Tcl i debugowania.Tcl rzeczy poziomu, mając nadzieję, że dostanę się do raportów na poziomie C i vice versanawzajem. To skromna wskazówka, jak ułatwić sobie ten obowiązek.Jeśli przeglądasz ns gdb, to
- Wywołanie Jeśli (pokazane pogrubioną czcionką) poprowadzi CięDostęp w debugerze Tcl. Wskazówki, jak sprawić, by ten produkt był wyjątkowyKorzystanie z debuggera i co może z nim zrobić publicznośćUse Gdb Debug Ns2
Ispolzovat Gdb Debug Ns2
Usar Gdb Debug Ns2
Usa Gdb Debug Ns2
Utiliser Gdb Debug Ns2
Utilizar Gdb Debug Ns2
Anvand Gdb Debug Ns2
Gebruik Gdb Debug Ns2
Verwenden Sie Gdb Debug Ns2
Gdb 디버그 Ns2 사용