🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #73010

Pretty printer w gdb, ale zupełnie inaczej.

#73010
From: 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 :/
Technical Details
Message-ID: <uf1vtj$38avu$1@dont-email.me>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!news2.arglkargh.de!news.mixmin.net!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!news2.arglkargh.de!news.mixmin.net!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: heby <heby@poczta.onet.pl>
Newsgroups: pl.comp.os.linux.programowanie
Subject: Pretty printer w gdb, ale zupełnie inaczej.
Date: Wed, 27 Sep 2023 21:30:41 +0200
Organization: A noiseless patient Spider
Lines: 38
Message-ID: <uf1vtj$38avu$1@dont-email.me>
MIME-Version: 1.0
Injection-Date: Wed, 27 Sep 2023 19:30:59 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="dff4fcab014599344d681d87dfa71793"; logging-data="3419134"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18+OCCubdx0X3kcHmsHRo6m"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1
Cancel-Lock: sha1:vtNdXuIbSWYIl6mlAACYtWniDk4=
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit