gpt4 book ai didi

debugging - 在Qt中设置断点后,gdb显示: "Error accessing memory address"

转载 作者:行者123 更新时间:2023-12-02 22:37:36 24 4
gpt4 key购买 nike

我在这里写了一个非常简单的Qt程序:

int main(int argc, char* argv[])
{
QApplication app(argc, argv);

QTableView table(&frame);
table.resize(100, 100);
table.show();

return app.exec();
}

当我尝试在单击表的位置设置断点时,我从 gdb 收到此错误:

(gdb) symbol-file /usr/lib/libQtGui.so.4.4.3.debug 
Load new symbol table from "/usr/lib/libQtGui.so.4.4.3.debug"? (y or n) y
Reading symbols from /usr/lib/libQtGui.so.4.4.3.debug...done.
(gdb) br 'QAbstractItemView::clicked(QModelIndex const&)'
Breakpoint 1 at 0x5fc660: file .moc/release-shared/moc_qabstractitemview.cpp, line 313.
(gdb) run
Starting program: ./qt-test
Warning:
Cannot insert breakpoint 1.
Error accessing memory address 0x5fc660: Input/output error.

有谁知道为什么断点无法插入吗?

最佳答案

不要使用 gdb 命令symbol-file加载外部符号。断点地址将是错误的,因为它们没有重新定位。

相反,在 main 中放置一个断点,运行程序,然后设置断点:

gdb ./program
GNU gdb 6.8-debian blah blah blah
(gdb) br main
Breakpoint 1 at 0x80489c1
(gdb) run
Starting program: ./program
Breakpoint 1, 0x080489c1 in main ()
(gdb) br 'QAbstractItemView::clicked(QModelIndex const&)'
Breakpoint 2 at 0xb7d24664
(gdb) continue
Continuing.

然后让你的断点发生。

确保在要设置断点的函数中指定参数列表,不要指定这些参数的名称,而只指定其类型。

关于debugging - 在Qt中设置断点后,gdb显示: "Error accessing memory address",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/912808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com