有人知道在从gdb调用漂亮的打印机时如何判断给定变量是否有效。
例如,我的一台漂亮的打印机使用gdb.parse_and_eval导致gdb崩溃,除非该变量已初始化。
TestPrettyPrint::TestPrettyPrint(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
QFile f("C:/Log.txt");
}
如果我在第一行放置一个断点并尝试检查'f'gdb崩溃。如果我在创建'f'之后设置了一个断点,一切都很好。
任何信息都非常有用
由于
答案 0 :(得分:1)
无法判断变量是否有效。
首先,调试信息中没有此信息。确切地说,DWARF有一个GCC扩展来提供这些信息,但它没有明确规定并且没有真正起作用;并且无论如何它都不会在GDB中暴露给Python。
其次,即使信息可用,也无法解决问题。任何内存都可以被bug破坏。
答案是让漂亮的打印机具有适应性。您可以使用现有的“打印”设置来限制发出的垃圾量。
如果gdb崩溃,那么这是一个应该报告的gdb错误。我知道bugzilla已经有类似的东西了,虽然IIRC它没有复制指令。这是修复bug的最重要的事情。