Article View: pl.comp.os.linux.programowanie
Article #73010Pretty printer w gdb, ale zupełnie inaczej.
From: heby
Date: Wed, 27 Sep 2023 19:30
Date: Wed, 27 Sep 2023 19:30
38 lines
2709 bytes
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-mailShow 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