[GDB-Quick] Prints – No Need to do “std::cout” and compile again

For debugging, most obvious way to start is adding print.
When we have gdb, we dont need that (implied software built is in debug mode).
Lets see alternate ways to do that in gdb.

Printing Variable at some line.

We have breakpoints at hand…


This content originally appeared on DEV Community and was authored by mahesh_attarde

For debugging, most obvious way to start is adding print.
When we have gdb, we dont need that (implied software built is in debug mode).
Lets see alternate ways to do that in gdb.

Printing Variable at some line.

We have breakpoints at hand. when breakpoint hits we can print variable values required or message needed (like which if-else branch taken (-q), ¯_(ツ)/¯ ).

(gdb) break source.cpp:50  <enter>
(gdb) command <enter>
Type commands for breakpoint(s) 1, one per line.
End with a line saying just "end".
>print "hello World!" 
>end

When breakpoint hits on source file source.cpp at line 50 It prints "hello World!". No need to edit code or recompile it!

On breakpoint, we specify series of commands that need to process. it can be made simple as printing single variable to printing complete data-structure.

Same can be done with dprintf breakpoint and print, however first one provides more flexible and easy to use formatting. I hate dprintf!

Print but more efficient

Our first command of use is

(gdb) print a
(gdb) p a

This is fine, even if we have array.
At times we are interested in buffer contents irrespective of its data structure, treating it like memory area.

(gdb) print &a@10 

Above command accepts address and 10 further locations from it. try a@10 and see how cool that feature becomes!

same with different formatting, printing 20('n'umber) 'f'ormat 'w'ords with address a

(gdb) x/20fw &a

We also want to check same variable at different breakpoints

display <var_name>

is easiest way than doing p everytime.

HTH, Happy Hacking!


This content originally appeared on DEV Community and was authored by mahesh_attarde


Print Share Comment Cite Upload Translate Updates
APA

mahesh_attarde | Sciencx (2022-01-21T16:59:09+00:00) [GDB-Quick] Prints – No Need to do “std::cout” and compile again. Retrieved from https://www.scien.cx/2022/01/21/gdb-quick-prints-no-need-to-do-stdcout-and-compile-again/

MLA
" » [GDB-Quick] Prints – No Need to do “std::cout” and compile again." mahesh_attarde | Sciencx - Friday January 21, 2022, https://www.scien.cx/2022/01/21/gdb-quick-prints-no-need-to-do-stdcout-and-compile-again/
HARVARD
mahesh_attarde | Sciencx Friday January 21, 2022 » [GDB-Quick] Prints – No Need to do “std::cout” and compile again., viewed ,<https://www.scien.cx/2022/01/21/gdb-quick-prints-no-need-to-do-stdcout-and-compile-again/>
VANCOUVER
mahesh_attarde | Sciencx - » [GDB-Quick] Prints – No Need to do “std::cout” and compile again. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/01/21/gdb-quick-prints-no-need-to-do-stdcout-and-compile-again/
CHICAGO
" » [GDB-Quick] Prints – No Need to do “std::cout” and compile again." mahesh_attarde | Sciencx - Accessed . https://www.scien.cx/2022/01/21/gdb-quick-prints-no-need-to-do-stdcout-and-compile-again/
IEEE
" » [GDB-Quick] Prints – No Need to do “std::cout” and compile again." mahesh_attarde | Sciencx [Online]. Available: https://www.scien.cx/2022/01/21/gdb-quick-prints-no-need-to-do-stdcout-and-compile-again/. [Accessed: ]
rf:citation
» [GDB-Quick] Prints – No Need to do “std::cout” and compile again | mahesh_attarde | Sciencx | https://www.scien.cx/2022/01/21/gdb-quick-prints-no-need-to-do-stdcout-and-compile-again/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.