From cede06aa752062f4e09cadc1be8ea09d106b108a Mon Sep 17 00:00:00 2001 From: Atabey <55498083+1atabey1@users.noreply.github.com> Date: Sun, 14 Dec 2025 14:20:17 +0100 Subject: [PATCH] update docu --- README.md | 25 ++++++++++++++++++++++++- doc/ui_data_mon.png | Bin 0 -> 19270 bytes doc/ui_mem_regions.png | Bin 0 -> 16833 bytes pyproject.toml | 6 +++++- uv.lock | 2 +- 5 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 doc/ui_data_mon.png create mode 100644 doc/ui_mem_regions.png diff --git a/README.md b/README.md index 21633f9..1c8696b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # gdbplotter -Lightweight Python tool that connects to a running gdb server and visualises data from given memory addresses. Be aware that this only really makes sense on target architectures that allow reading the memory while the target is running (e.g. "Cortex Live Watch"). Tested with various STM32 processors and regular STLinks. +Lightweight Python tool that connects to a running gdb server and visualises data from given memory addresses. + +![UI Overview](doc/ui_data_mon.png) ## Features @@ -44,6 +46,23 @@ from gdbplotter import gdbparser # parse gdb output and plot ``` +### Specifying your memory regions + +![Memory regions](doc/ui_mem_regions.png) + +gdbplotter parses its signals based on the base addresses and format strings that you define in the *Memory Regions* tab. You can't run the tool without specifying at least one memory region first. + +You can find the base address of your variables by simply starting a gdb instance and with your debug symbols loaded: + +``` +gdb +>file main.elf +>target remote localhost:50000 +>print &variable +``` + +The format string structure for decoding the fields of your data region can be looked up in the [Python documentation](https://docs.python.org/3/library/struct.html#format-characters) + ## Configuration Upon first run of the GUI, the tool will create a file called `gdbplotter_config.json` in the working directory — edit this to change default behavior (input paths, plotting options, etc.). @@ -51,3 +70,7 @@ Upon first run of the GUI, the tool will create a file called `gdbplotter_config ## Tests There is a small test helper in `test/gdbservermock.py` for development. Run tests or examples manually as needed. + +## Note + +Be aware that this only really makes sense on target architectures that allow reading the memory while the target is running (e.g. "Cortex Live Watch"). Tested with various STM32 processors and regular STLinks. diff --git a/doc/ui_data_mon.png b/doc/ui_data_mon.png new file mode 100644 index 0000000000000000000000000000000000000000..c842d34aaac946025ea62a1a5eb3660416c9af9c GIT binary patch literal 19270 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 z%0D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 literal 0 HcmV?d00001 diff --git a/doc/ui_mem_regions.png b/doc/ui_mem_regions.png new file mode 100644 index 0000000000000000000000000000000000000000..1019c0ea188244852251c947a4e4f541cc1a4114 GIT binary patch literal 16833 zcmeIZd05iv-ak%FdoDFC?orcJ)1qdXX)a7zIn|iWm}$9HCayrMR&LE$TA7eF zYGUpRu8=KIZfGuus8pn=fQAUl{=Knz&NJtnne&|U{r;}sUys-2CBn_UzL(eQ^}ath zj~#W=UShZe0)c2B`eFai5Xe_4;8$nS0`N}l1&#~&GbiF_r+tv(Hsew7&%A)W&U+z{ zvb3d&GxNd!i!c0eG6Dk8d8zrGLkoR+4g%SG;?VxR$D@4&0}GSCWu1b4UUTIp9R9d* z&ehg!%+u`^rU+@@+AHtROs?HO9IlEu=5%mT@%!ad z`r-X^5LeziTwZi`|3wdxxQ8^|Un`DukGwZJE>-^a#6jF$;M%=wr>&ShHf|$R(AA2> z2|0PfHg14{9xwp&`z^D9?^p385lip{OS;63t{Gnr-o`lv&VxW6eQP-v0y#E`I|zZC zp0HC+bykGRiJ`mj3( z-97M5zzWrmj~VOe=s2Z)iODZfbyN1JcMD;PM0LAc?=JGe&bG#4yt%K-CBbLh!Aosy z6$=}OX*3Y5^7*jJAFHCPrA)RW3mYLB#j8du*osy*|DXWx3@e$AqfBSf#h0Nom%aV$ z1wwo2r*v=eFKU^un#YOkP>rOio_bc;XJIf|;o02tE4YvB2LrLgbj5w95k+W3caWyT zVkDXoMi0&@)xCD`(j4`)TE%8gsKzJSFjG$0i;@zxn1X8%u*d?w9_E8yZIwKjfoFiV zs*#xZQ4vfnsvAVvMSngmNyN@1R-~zC(k8ZKO>e?ZZt@O|D3;shy0y70oL=MQ5!et_ z!!$+3P(NVL=TrFSU5h!q#iehI$RCW3hRDAUoHrs}sD2M^!KkOPSV;tII-+8B_52~9 z@gaYTB$#3)Z`W0}hrD{S_Ok(AXi!0sFjRdCohDz|5$t)%A^g;#t5MOa_qwXnl3$?G zUn<>@=WcW-zsgr$#f3Xeh#W#4{O?=Pw~o(k7|kM&^64rj%oghtI(0DAlCu7O zBiEEYX&RvBU=?XGYK1}}^!{zp_GY5@@G4*7DlT^mK4KmVs%V5hWXM0-sVlG&`mp>4 zxSB`W4rz98fUO+hvS>!1In##*?c?y%F?cC_>)ez5MY6lT(z{Gx=2*1E zmLjsPkWWw0RUd#)(U%se$Jxp{<`G}nJ0_1j&TGSn-La99G_??hV+#$-N2JcofPQDW ztVAti^6J}o+Z46MXPaUUyQZG$u<>x3H=;!p9B96W&y6IjN#cgN$D~8Ps-X^~r|iRp z?$Uex=jVAmR`!lAa)$|5z%1ksN~8~@lhg6^>6WiP9Pyd_RXPdc3!@b?xd|IS=n|G= zsP`zWLv|umd_r`}YvuHTr$&>mFtKYzs9F+=pI-l+myb^y`=vy4XgJ1+ZmiD-PhbyR zy7~A%C0DJ$2dF>c73ncbO#=t4f&flR`Wh9@jlyu5uV25ee?3s>$1)SemQ2T1OrzP; z*)U3pvaci?J>-rV;%g7S*Y=+f`%D1)`b5LW0DrbLn{DHp zs-!U4bagxI&Q-?(=f{ea3{WUf73AZh5_wLTPfoRi2+17i=Q$!8MINOd zx3j)3;jI|t*bl?(QPY?6PkmR?=A%KU&%H)GV6%&}dA_1z!WxYVb; z=wwJsOsx(a=U7kMK6k3SyIUdWBL|0(!{*Di;h2mbsfu!QV%4QAtChwt_e5D;KX_?F zAM7`y31)NYD!pp_kEqq6}_6;L#XS*N$o8IWNKo1)DwRx2mmKUllVrDfkvs&5gRUgmp@S*Bq z5xY;-yKL{##4~X`T1E|3P^CwvKc2OheP{)li<`F2hp6{45BLwr%LN zZO!BauUJQ*w6>E87TqGxNPJchy1C7Do4I_@uy12uyUkPTi6ZkL{LD?f^@Lgjh7=76 zz%KLR)ugjA>Fli!@&x{MX7Wn**oFevD{w5uT+jUEC@E6Awcz{%BCkkEvv#olRz>vk z^1$@vqx%$BEj~7!u#q%V6wO@h;dL+GN1+)}t?al}6PzTMB`I~578_riWJH_8`_Ct5 zno{$ptl}G2X4q3u!aPqO6%R!aP&gTxdlHRB`Ia4W#Qr$o` zn_7J#MJNpQeHKhhnCV;dI)JoZhgHDO;w@zqm1(C$UU z&U$qv&a9Xdw)<&zNobSk7Cd=1Z6y!xO{VZPc#E5slf9Gr$~&iwB^mMx+a`>cpY_J2 zp>Qhc1Pm`xaHXS+1nRXMuHFeIH}6?E?xV+Qbf~laLRXw`2$cI&S=ssUNs+nic)VgulyDEhDtzVBW6wEQ*uYKr>WktB(&KNj7s%IEJMQY8+1RTg)% zL#<_3VKY~`K68`>Grn&WP8SI?v|WQczj{9W$~$xB^X=#wZ?9^ay!_)nE3=1`Ay2a3 znq?oq(bxH90(<(0`m-NiI`CiC<_d1Qzk9__cP1ezA4bN;#$rZGl~bi|ukvf=l-jUo zQrOn&OSfmfPp^)cJ_xW^g|76r?tNt^R_4NOW+-poyO15P{>o9Mc|$Y}3-weiE|{Sg zUSvs(QZds}*r+PcTM)0p=mK8_vNpcvG`TXgquJrZu^H7unFFuFAy}1jnzb6gM5V!& zv$)+_CSa?OIe--OZq?J%tI*H~4FLe}3IZlR>rAwp4v>`zPc)c(rQsY1ME~Mcd1k|p z8vby)y#oM@lBIw$LA3VBx_y;ynvO2*bpk!nm!|MkZ?(Zk5?8g$cMh`tAn;m$?JVW^ zTGP{ai#1=oV>P+gdef#&-f74>4KSOUs`QL~CG{Q1k8jFv!NpI$4H^B#+YT=ee<(jY z50Gigm;6T4=bb9le zUDq!fISU7y1Q6=^mZ$6dkQrH4>Lu8o_pZaYeppM;d#w##{xrJmEb&s2y_J!6J z7rAqG=RSaCvSQ7qY3`8_$cc*XcKybD^DD=Qk(Cj;f`DiJL>MhEwPMG`mY;&BYuZGF zSMx6tE%H)z!*U#Y?vxbbkUu?3&JYi=)}t!1%VT zs<9dfWP4i`cG=N+IYeahol-qo2Ndf~V`j=(2R%}fMyfBh5nH;1&&=pyMi^8pkpew& zpJKueNpG%;cbEf_ysk>5_T*jtDWNFP_3Gf`M;T(2Du}KenFyi}6x5(2Ha|?wli+EivvCuZ@+#(7+%r5~= zQ}ewu#RoX~9+ocKNNJm?=REVWDKPQ_?5zW$L`)HwyKDCxh(~J&z|}8{)xAPt7{inQ z>C-us#+wG}G3}=|MQbx93fG5tJiV>0&0phJwM%%>!X#h2x~Pf4Hay*VO#tlJ0QJ%; zuITM1JU;^hS>*2S?mh8~5jtip@4%&`wVBAy%ONb$%gAsi9mpjMoh_CLi^7@2Gn%(< zJ-P?tLV~f^Y!Hdis0)z83&ne_Nry1YbRdxD`tS-*;N+SQE`6o9JNu}MOI_}39a*O< z2phfIW`oSH?f>YkUxJF@xW;AMI14~Ot*nCfnfHxXxpu`ttel7r#awd;FMdrp&>s~ zWv^5k!!Sa{#_qwkwBK268t^EHk*Kmd^K>;qS|~izR9hw@HFxL=WPV&-&<%Qrlj(|> zv;5w|!a_g|suHLb6%`?)(s0~?Gh3!IUv7c_T!q}_@Z-tdC{>OP>(s+wuvI;G?1;N_ z!k9CDXSQVOr5KG()ACil+bzkkkf%_pnM=`EKoBaEZYf$}7&Sg&NlZ&R_q?fRK_P0O z{JC2Sl9$v295e*_@^MVUk0xLirOvid`I>2~d^ukz&I+Yz~Mn@dSUpCYC{LC`LGY5o8 zpBt|(#H@; ziDLzne)rZD-pvB)-j)MV?0QTaP%VczjDe zzb%6x`^LhI)a-jn8B@L{FEtdz+=7JR^TF^xhUaw_8=)1@ytWnLUbdJHJ3%dRO*8sr zv+(>~Y5px_MOA{tD9usaUd*HKIu{u4Y2>O~)=vtI*92yQ@FdupULyI2UF7WG?wCHC z$GL`E=LtTI=?h|frG==HHI)|drhSIk)8qbA>rQ_P zT&s0OUyMxLzmX>}RtlfXt{wFFNwKd9m2FkUp2>aCr#jwkm$j#@solbAb6qTDUuTo%rb|7$ZUyH6Ps!RD#nH57CB z&B~g)x3EfEfGLS%!%g?VP8x}nH3g!06W=~&~!!plJS+(;Adrs<#T*#z9#8sEC}NvQ$MG9ph8J+NE(FjMJuTznuem3;?{ z#2(H|HPN}=zR2jf@>d^8bKTdhDw#;DDAd#l_ANEpfb{0Ea#*26zXF+J+k=2NUBaA! zjkJ;-E+c84emH%GLmsO5VL-aby-ymEl>=W~XiQ(3G@OPZo=6VX1Ouy_Y)W?A7^W~L zk1%|m*YUGk$rO$2kk{ksSXD-Cf&B(6&JJj*C8H2n#hsXa;7ge|Z7Q@4D(LzN^Y%w!82LT=cxd8Cq4h_4JH(aQXjg9RyHAO{6c8k}9v)M!xVJjtH;ff;WAa4EN zhqa3r!@`86JQylIzF)jrBdmJ+_@Is?W&fT$LB14h0Ri#ZmdWlrb|C)$ZN@bc&8W}) zjgM>6;CugPD-0WEqwQa1wm*xSAUOZAd1XY7ur1rxJJh2JGlpuWx~vjafmHi`8UJ`- za;X@k!lLWN$iy0J34%9%O*lt9Cguc<|(&^pRaf1 z#K<@aM5Ew9Rq3-Y(NB{OH}c~Hlh>|1W9~^9a}{$>Zi;?QWKP}#sVw%!5cvRy6^S$f z{J{HPCPT?%y@sbe`>l@0?DD*d$L^xgQ;uz&j5ap**>TRIW$*rW4_XL_SeCXr^>_nf~jnZ9GQtQ>t z2?i<8n7BCx5xNh)3lsDmVeD>!=y=*)KhbX}8(C41*VBy56wpS8ULM~~IvUt7owoGf z-UPzvab?Vo3w{k~uLHZVH~!`eV1tN$0ppf~R?7FA7J=#syrwgHX>|lRN&Z(k!UYG8 zwE*Bzn)Lsa3jg6y{|6I0n8qEp2elh-T^;%g7rPEIU|jUB_*ER2S=3ZqTwFW2e&71s zMJX=!;^U-wiJbdDPa1?JKp^r@dmNu+=9hPMbo|5syAWbDo3`H_O{CgJjbChVk~M<` zBfycIU%3)MuaMNteAVX0mEdT5+Y+e@b=PPm)IRk)GMg$xo(?*I4f*`6p`la%%nnbZ znedt-Zul-TT4UZP6_T_&r))_q z9AFa}>)8%~r=BBAGouXGe}AyO*)|oeJY`F!I0IM_cnwy(L&X$0172vDX8p#f@&3`+tg50I zF!>ig*QkDtPft;{Ufz<*0q|zvoqyWa;f7*v%*Bgc;*6v+W`b6CezLZkeI@TPJM{ch zU~6{40KzUP_FjC6jerCl70tLNG-4#1#PU=GfXB(18>{FKCD6dNRFKkkBmalMxXS@Zp zq?oWIIB6e~=$Lg3*nC!1W{$;`WBuOE8HCtCM%87434j5s1YXUX}Vz4jeq>1zW30hZ>YY|_ab@M&PuU;oWb(9P@MWPGGNhJ+S8M?kTb{iiZF!eO! za@rMzT@^z+fbZfOv{DRk<+%i((KPz|T~*}G-3la(wk;h_O*UCS*TblN->OghrdY(5 zcEy<>^sR^MS$j0wo3lrg)&}oR{yn2IMPV=wwzjrL_Nw;E#?bWDt##uLc#Le6>FQ$N zZQA%DdiZ{TKVVM-Uqha&?ms9ws~8R}CU-@FDgPlKYc38Afr~7Xq zB9ff{Q{ZnvW{-HP2*W~7v%LcXr$AqTi-BR%2Wlend1cM<*^u6A**Yo0=3+Lg+rgNV zXKZ2;+2Eu^6cN@C_LM%5u(QY5kHPEM4OEBd&yPI&$aZ96Zcg9Eq8;k?nSuz!;rQ&3 zvlNJNMmD8WpYpj6<(;SaHKj~oL1YzAHpgaS8=ZRNWN=qdS->#&I-YfW5b7x;CCs<((ptV#|%W`&i~c+P1pbC-cDk>)xm@yEwd zeMZ&Wn)g;sm&!N8hfn$8v+StOc3j>PpRD*n-VIK5F<0yPnLbv#J_S;d%h&B@MHYE6 zdRS#hG$9BF)}awc62}CbS}PO%GwkEAV1N$uZ^cAyxHE-^*V$dv39q3P6Y`%{(PP|k z>OGS+68yw5`!B3O2a;7P$_X3MJ2S;OyUw$!xQIJ>tO4dAlipJv2xlSAci35&@f=xG z+9{#INc&ge^6J!r%ND+|4@^lZ7zcl-r13GnYMm?1<*q30F737{sg=_tvpNot>o2s` z;fNkjL7C25>FS#n0=sUn&1t5rds2~wJn7RzW*;(PtbrV8W><#DF$`@QBdn$3%nfY0ie&w&;&$O`@ zjH=Wp_%A4WVOsFHuXCEQG~KsbC|TjpCKf}8jSD|qT&;ZUEjbd+Hy?FY@1QTehCpWx z;@>Yyo5B)h&4nt&3C`Bt%fHSLM5NQwBitem+NTB(+=w-s;cbz&{v*7Kv6#7+DnY=( zZuU2lH<$h??5xUb+j#agJ_0ODDQtc-ib0ZDBBcc6N5k8hW@g>8f9|t0oaw= z4zijUi!V7ZGo1GFT6XR$R3hFP^8Q$K%$D5fn6ah4GcQ6G>ojll1xe+?K(T13;9q5` z|BRUDK1oVSO7vEjaX6e}Qt#WhZ~2px<({Yb3Pn5$g|do`Z)q(p<1T|htbcSBxh2Ew z?FAXD>uPJqV$=8+16QWvLYwrAG@mjI3>)lL{R6c5aslOc;l}Ta)@pR32wLII0&ys$ zu3>4)^5Hdh(WO<#^dbU0qo7wdfe1Yz*<$H`T8pKX3J4WQq@^V~!yseLvUflln}63p zLB8m(yt*i5dFAAWT){vCf&9Y)QomKOz^<(R>6)`Op|cXEMzlE;Ck5$)j$@^5++1Uxe+3(UBMi!(Cc>GHf?IiE^d}R7J>6Vvk5 zNWJhFg#Cer&8sLu$-dT3}EQhCtW9d2d`0s z6kXe0yX8u9PUKI)VlG{*j4kw~4-tG$`r$@Mgs_}bxKqH{LfU?3TK56d`u=T3<8OqL zZ-}8#*OvRHRdSOGIx4=-nL;K6sg?nZ(eGQwJ|NP%zXuFtz0EcvUzj&_wVgcw2^xk0 z=2Gh!1K!#H{MMtpNcLO?843fdVuhdswU$?w3x01D^=}a8KL($|S8i!h} z8pFsM*XZG~NzSeA7Aj3C>lA->W53aqy%5K)Q9+3-@<=CQt1l2?XXD}NrQfutAT=@p zvCsYszSCIq`v>(?x#ogcxuZrMs9s>8KW%C~KCtk^D~HR%&|eoo-p39t{7}gVcHAqR zZyvpu;VHO^jE@akC#h);{rWm@ha_SwmlLr3B%He&#knuy zLKYoN3(>cC@O=E|_l+E4$ffF=kgw%@Xxug~yv~d!;gNn3fo`+7Lj_0nLzvgf)@^h= z?Xf|D7>m|Wr=le(%b%B5{mt0~dy0KA&V3^GtVr4?Yrkh{32aE`_1*-kHdOw(_ z&wF?AvSxG=mBa&uF(=~swiu!vL%{g{afXdK*yYeFqJV(5rh2d9B8+^eQG?M4?s;wq4^$l% z>B#I;!shr6DBs4Wz9pKn9@a&A%b9*~@;K|G;w#97z>wC3AEsWOiF5i+#yn*J>04VG zh-+%MbFGS~lzR_Fhot*)0|ILd@w|i}M=-7T%Rm8z?^`)-{<$Kzy1hgzMb}ZBW3gGT zv~VQEd@Ms25inU=+3A)SF?p#jZbgP*rtwmA^7M4y-1~-Yc(Rewyf7*+jo?zn#>Y_q_mfU}k zdBOlDkqLiyh!;5FPK~$fm|DihXe6@#FsJ-;^NXebt$s04yOB-8*S!eGgfUlY0%1*G zWXA-_@;IIRK(6o zpj!eTmi0eqzqfZI5Xo}9^^_Q7Hc-bTVXFiWYf8uj%nBLpR~jDap1J}8iT-q&-FXjb zqP&ovFdX{Q1u)WMU@Z4vnjJkbMy5EKne-|8B|(H2{m<~6<$Paq@R zE+xgTX|_r&cmR_*(!d(|#hzju6{)|(3HkjqP`~gRr85&syh6BRX@`Dl&S;ieTdKE+ z5j9$%X^H0w!}az1tKR|+p9>>vJGp{d0gL7rUaT@!qH{+`$oo0cmtC@zKuCxj264=4 z;{86(vC=~wp`M1IU?G>mJGY1>VaY+MU2V)zG(7lBko^?H^uc-nW=cKl?ZgR-4}&c; zTk#jL25htdANqz!@8guYE)%wm})#5~+;^I5!#EN?*_9{N9$~e8qJ^?k5 zmj>jbY7@})gCDh#1~XQE>41VmNHk3tcvb#)v<_$`)Ei;@fb*9w)!AX`e<9fM)PgcZ zcP$au>?l^vjBw!+*Se7V{cMll8Bmy?W&*1gs&Q0{zA!lP?OLl1$<8(zn?=-KO=ixL zH)}-DE%o_fk1;>667EGEz5s%B@9LZ|?W8N-*nzHP-&uows(ar9wAC|A>fi=`S}@n3 z&J1j8Svc9!(xr|bsDy(i9<;{m)B`!2d;E@c&tMuT&SttPMue&~R{#b2l`*S9sTR`n zVW@zy{}MP=$uEB)RGXX&M5yPzb`DO<#s276)pXCI?rf9juq#d1U?;6s4ji2|{C*$& z+7*e*u_?zFk% zvG(%lHOw9cKsp|+MX@gMYs4JelgbQGAHYR! zLS%t}eLlJ7J#jJ$xG0K|qs*o@Xs29YX%a%+p+H3cehmug^-Em+N5t@VS7rWqrRNWv z<=@XB^ZbL=+vY$@P5vuoyc73z)mJvn{E-d#Bv8TXQAaMsr6_Y20uZz~B_&HM#q3^9 zkwO#8h>lBB{`nfum$^yT8i#nrI~!O{i9QAZ2Pa9Vx)R#oZ2VE`Q0q*9B4&Y6Ykod( z%L~Da{+wfIYz0W;cKL!Q-nObS50p?pYV@9_!eaa>TO)|uh42>K;OVR_qd1$W^HS|o z;Xk-hHfQY#1p%W1Ts*kxJpYNCV@vUTko(@FYTN)9@Fez>$FkdJz-@yZZ&K>Ry6pVy zxa`>?b9cKPAQdH!;}rv;b^Se#pe*eOe+Nz#V!d*qfgvktrrtGEiHN!E`(H%C=)oqa zyG0~LBL(H>2*Fham#RP5 zR93An@?>IEqaGc6=<_%8w=b3i8}}PcI-q7e;(vITaxhG-n*Qmu*EJ z7t{-T+dA6@dS+3{RGcAaF1c2oE;dd_dY;IRbEQ?ba*1!8`B5zlv}eee9q5VJ|3LS} zXyQvr>anScsvVHZy{7?3$%)z0ttjM^2K<>b2Sl`R`Mrd(q~V&y&8hz;^0}*@2{JO& zu=A7^`7T@zxB6)!jaiuk{~>0Z@>DQ$=6E*&@Tk&>kk)MKVXqNiTJ|@W!Fl&OksK@& z>W_Te3*xO^=3hlwjR?e-rI|pXQ4Oz;9zE)xnVAXX8!nd%Zf8_Nu2_7TZ=!Y+eIe%9OFM*c)UYOw<%o?7ceIF>rfVmv|m!9;; zYTsXxmW4)!;DL%xae^B!6B*T+XY8BYYIW|ZgCAmq0k2`N?tXa;q|aV$U_tBS!7a7- z@AtjA!@UcyaAxMgP(k+7_lpSEAFlVrngJX2H}MK=S@yML-L+(UGI%0KCFxeU^5B&$ zFx5K2iH3ZO7l(;GUj)#;jX*cuLa@=hUansuXkRV&;A-j`bssc&@G$ddH(f!k*7r(b zVUHsy;($9^EoiZu7Cu)h7S-^M{DuH9#ipK1yWp=gLki7kTBP)t9&T@29gyCgrze0(8Ize_{|<{2)YJuj3;p2y7QZm6{hL% z1S-u7ZQSVAu&4`&Wa-sPU+$*#lm5_8&b@7>5E5Tv`2h#Lf)yIEQ`H?NYm2I*F#EQSH4 zv-%L&|NI4)$}ShfCVG{}MWi!+d<(6&F&VAD$j5@y)>Y9m&elA5vdh0^V^J*yRhOgD zyzIjN5d#%ef-63s9QtbX&T|7vH&yM%HdtG7QAz z-1mQ*YpRz2ABYJ5yOIC9k-t9}{r?Qa{?{V^fAA(mqf{y#AvSBS_^d%GY5#b~$9nmf zJB0u{JkdNu3z7=M)VZSQA8tsEf04T9)s_iBi-8k$e|SV5(V=!g z2Or*;3#A~;5WBX_XX(h(tD70|15}a&r)IwBvCjsr~XLL0CMQS(f!5y HPG9*yl<=~a literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml index 324e2fc..46c6bcd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "gdbplotter" -version = "0.1.1" +version = "0.1.2" description = "Simple UI for printing GDB memory values" readme = "README.md" license ={ file = "LICENSE"} @@ -18,3 +18,7 @@ dev = [ [project.gui-scripts] gdbplotter = "gdbplotter.plotter_ui:main" + +[project.urls] +homepage = "https://github.com/1atabey1/gdbplotter" +repository = "https://github.com/1atabey1/gdbplotter" diff --git a/uv.lock b/uv.lock index 603db74..b9e5654 100644 --- a/uv.lock +++ b/uv.lock @@ -171,7 +171,7 @@ wheels = [ [[package]] name = "gdbplotter" -version = "0.1.1" +version = "0.1.2" source = { editable = "." } dependencies = [ { name = "matplotlib" },