擅长:python、mysql、java
<p>从您的回溯来看,<code>register_libstdcxx_printers()</code>调用似乎失败了,因为已经注册了这么漂亮的打印机。为了避免这种情况,可以将其包装在<code>try..except</code>中,以确保<code>.gdbinit</code>中的指令在失败时不会干扰GDB的启动:</p>
<pre><code>python
import sys
sys.path.insert(0, '/home/user/gdb_printers/python')
from libstdcxx.v6.printers import register_libstdcxx_printers
try:
register_libstdcxx_printers(None)
except:
pass
end
</code></pre>
<p>(<strong>注意</strong>:通常,<em>决不</em>在不限定要捕获的异常类型的情况下使用<a href="https://docs.python.org/2/howto/doanddont.html#except" rel="nofollow">bare ^{<cd4>} statement</a>。但这是一个特殊情况,在启动配置文件中,例如<code>.gdbinit</code>、<code>.pdbrc</code>或您的<code>PYTHONSTARTUP</code>文件中,您可能希望编写这样的防御代码)。在</p>
<p>但是很有可能这只会为您消除难看的回溯,并且STL向量的打印仍然不起作用。因为似乎已经有一台漂亮的打印机从别处注册了。在</p>
<p>确保路径<code>/home/user/gdb_printers/python</code>与您签出<a href="https://sourceware.org/gdb/wiki/STLSupport" rel="nofollow">STLSupport docs</a>中提到的模块的路径匹配。在</p>