Difference between revisions of "Pretty Printers"
From Code::Blocks
GravityWe11 (talk | contribs) m |
GravityWe11 (talk | contribs) |
||
Line 32: | Line 32: | ||
<ol><span style="font-size: 10pt"><pre>source $(TARGET_COMPILER_DIR)bin\pp.gdb</pre></span></ol> | <ol><span style="font-size: 10pt"><pre>source $(TARGET_COMPILER_DIR)bin\pp.gdb</pre></span></ol> | ||
<ol start="2"> | <ol start="2"> | ||
− | <li> | + | <li>Disable Codeblocks handling of watch values:</li> |
</ol> | </ol> | ||
− | + | <ol><span style="font-size: 10pt"><tt>Codeblocks->Settings->Debugger->Default->Enable Watch Scripts = Unchecked</tt></span></ol> | |
− | |||
− | <ol><span style="font-size: 10pt">< | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | </ | ||
===Other Info=== | ===Other Info=== | ||
Links: | Links: |
Revision as of 00:48, 26 October 2012
GDB Pretty Printers for STL output nicely formatted variables, even for vectors and maps. This works in GDB, and if enabled, in the hover pop-up and watch window in Codeblocks.
Test with GDB
- Install a python-enabled GDB. For Windows, you can install MinGW-Builds over MinGW (consider backing up MinGW first). This updates GCC to 4.7.2 and includes a Python enabled GDB.
- Create a GDB Command File to enable the printer. Store in c:\mingw\bin\pp.gdb (or wherever you want). Below is a sample command file. Replace the path c:/MinGW/share... with your path to printers.py. NOTE: A Python STL printer.py is included with MinGW and MinGW-Builds, so there is no need to download one. It only needs to be loaded into GDB's python, which is the purpose of the command file
python import os, sys lib_path = os.path.abspath('c:/MinGW/share/gcc-4.7.2/python/libstdcxx/v6') sys.path.append(lib_path) #print 'path is [%s]' % ', '.join(map(str, sys.path)) from printers import register_libstdcxx_printers register_libstdcxx_printers (None) end
- Test
- Set a breakpoint in a program and debug
- Run the GDB command file (can use Codeblocks debugger tab command, or GDB from console) (substitute your path if necessary)
(gdb) source c:\MinGW\bin\pp.gdb
- Test the printer - example:
(gdb) print words2 $1 = std::vector of length 3, capacity 4 = {"one", "two", "three"}
Add to Codeblocks
Once the command file is correctly loading the python printer into GDB, there are two steps to activate in Codeblocks:
- Set debugger initialization command:
Codeblocks->Settings->Debugger->Default->Debugger initialization commands
source $(TARGET_COMPILER_DIR)bin\pp.gdb
- Disable Codeblocks handling of watch values:
- Codeblocks->Settings->Debugger->Default->Enable Watch Scripts = Unchecked
Other Info
Links:
To Do
The third column in the Codeblocks popup and watch window displays a long unformatted string. Codeblocks is calling the GDB whatis command. Can this command be Pretty-Printed?