This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 2019-03-16 08:58, Eli Zaretskii wrote:
From: asmwarrior <asmwarrior@gmail.com> Date: Sat, 16 Mar 2019 20:41:13 +0800Under My Windows 7 system, I'm using such commands(I put them in a my.gdb script file) to load and register the pretty printers.I put the libstdcxx folder in the same folder as the my.gdb file. set auto-load safe-path $debugdir;$datadir/auto-load python import sys sys.path.insert(0, '') from libstdcxx.v6.printers import register_libstdcxx_printers # load other pretty printers endThanks, but I don't think I understand which part(s) of this are necessary in my case. E.g., is the "set auto-load" command needed/relevant? And what is the my.gdb file, I don't think I have such a file on my system. The pretty-printers that came with GCC are installed where the GCC installation puts them, and I'd prefer not to change that if possible. Also, which of the commands you've shown actually loads the pretty-printers from their file? Thanks again for your response.
If it can help, I have something similar to that in my .gdbinit (whereas asmwarrior has put the same content in a separate file, my.gdb, which they then source by hand).
When libstdc++ is linked dynamically with a program and you debug that program, GDB will "auto-load" the file corresponding to the libstdc++ shared library. In my case, it's at "/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.25-gdb.py". This file tries to find where the GCC-provided libstdc++ pretty printers are installed, and adds this path to the Python import path. It then calls register_libstdcxx_printers, a function provided by the libstdc++ pretty printers.
When libstdc++ is linked statically, the auto-load does not happen, as you mentioned. So the idea here is to replicate what the auto-load script does, but by hand.
In my case, I have these lines to adjust the Python import path to add GCC's pretty printers directory:
python import sys python sys.path.insert(0, '/usr/share/gcc-8.2.1/python')And then I manually trigger the GDB auto-load script, that would normally be sourced automatically when loading the libstdc++ shared lib:
source /usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.25-gdb.pyThe "set auto-load safe-path" line is to define it is safe to auto-load things from. If you are missing something, you should know quickly enough, as GDB will print you a warning, saying it didn't auto-load X, because X is not in a safe path (as well as information about how to adjust it).
Hope this helps, Simon
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |