Próbuję użyć ładnych urządzeń drukujących GDB, aby pokazać niestandardową klasę macierzy C++.Ładne drukowanie gdb z bezpośrednimi wywołaniami funkcji
Klasa jest dość standardowa, można ją znaleźć wszędzie. Jest to szablon sparametryzowany przez typ i można uzyskać do niego dostęp za pomocą notacji typu C, np. Mat [i] [j]. Ten pierwszy niejawnie zwraca inną klasę "plasterka" reprezentującą wiersz lub kolumnę, do której ponownie może uzyskać operator [] w celu wyodrębnienia danych. Sama klasa używa zwykłej macierzy C do przechowywania, ale implementuje na niej pewne sztuczki, jak opcja wcześniejszego przydzielenia większej macierzy, włączania niezerowych startów, używania kroku itp. Klasa nie ma natywnego drukowania interfejs i nie mogę go modyfikować ani łączyć z moim własnym kodem.
Własne funkcje powodują, że odtworzenie kodu bezpośredniego dostępu do danych w Pythonie jest bolesne. Ale czy to konieczne? Ogólnie: dlaczego ładne drukowanie powinno odzwierciedlać logikę dostępu do danych? Czy nie mogę po prostu używać wywołań C++ i używać operatorów [] do drukowania elementu i, j-tego? Fakt, że klasa Slice jest tymczasowa w GDB podczas takiego żądania, dodatkowo to komplikuje.
Jestem również dość początkujący w skryptach Pythona i GDB. Próbowałem zhackować przykłady, aby zastąpić dostęp do danych wywołaniami gdb.execute, ale nie mam pojęcia, jak uzyskać dostęp do nazwy obiektu z funkcji to_string, więc mogę użyć czegoś takiego jak gdb.execute (??? + '[] + str (i) + ']', False, True).
Zastanawiam się, jaki jest najskuteczniejszy sposób robienia tego.
Każdy może rzucać razem przykład, proszę? – takbal