🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.os.linux.programowanie
1 messages
1 total messages Started by heby Wed, 27 Sep 2023 19:30
Pretty printer w gdb, ale zupełnie inaczej.
#73010
Author: heby
Date: Wed, 27 Sep 2023 19:30
38 lines
2709 bytes
Cześć.

Jest program w C/C++. Aplikacja zawiera dokładnie 1 zmienną globalną, 
tak ważną, że chciałbym jej stan (w dodatku wymagający obliczeń 
matematycznych) obserwować w każdym kontekście debugu, bez względu na 
ramkę stosu.

Tak wiem, mogę ja wsadzić do watcha, ale zagadnienie jest nieco bardziej 
skomplikowane, w niektórych kontekstach wymaga ona innego policzenia i 
czasasami "unieważnia się" a wtedy wyniki mogą być mylące. Wolałbym ją 
obserwować w locals i "zniknąć" w niektórych sytuacjach.

Pytanie 1:

Czy pythonowy interfejs do pretty printerów pozwala:
1) dodać "obcą" zmienną do listy widzianych w danej ramce
albo
2) podmienić/owrapować oryginalny obiekt "ramka stosu" tak, aby zwarcał 
moją listę zmiennych?

Pytanie 2:

Jako bonus mam też inny problem: w fizycznej metodzie "children()" 
pretty printera chciałbym, poza normalnie obsługiwanymi polami klasy, 
wyświetlić też wirtualne pole "[raw]" w którym znajdzie się struktura 
obiektu bez modyfikacji. Co wymaga wyiterowania pól.

Na razie robocza hipoteza jest taka, że się nie da, bo nie da się 
wyiterować pól przychodzących jako "value" do obiektu pretty printera, 
mimo że ma stosowany interfejs do iteracji. Wygląda na jakieś odwalanie 
dziadostwa po stronie gdb, brakuje implementacji metod mimo ich dostepności.

Ktoś ma jakieś podpowiedzi lub linki do pretty printerów posiadających 
takie zaawansowane opcje, jak manipulacje ilością zmiennych i iteracje 
przez pola obiektów?

Jestem ogólnie zawiedziony tym interfejsem, wygląda jak następny OO 
zaprojektowany przez programatora C, czyli kompletnie bez pojęcia :/
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads