关于Linux下的调试小技巧

关于在Linux下如何排查Qt启动过程中错误的问题

设置环境变量:export QT_DEBUG_PLUGINS=1
效果:
QMetaObject::connectSlotsByName: No matching signal for on_pushButton_clearBak_clicked()
xinke@xinke-FT2004:~/桌面/lijing/PTFEditor (qt5.9.5)$ source /etc/profile
xinke@xinke-FT2004:~/桌面/lijing/PTFEditor (qt5.9.5)$ ./PTFEditorUI
QFactoryLoader::QFactoryLoader() checking directory path “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/platforms” …
QFactoryLoader::QFactoryLoader() looking at “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/platforms/libqlinuxfb.so”
Found metadata in lib /home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/platforms/libqlinuxfb.so, metadata=
{
“IID”: “org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3”,
“MetaData”: {
“Keys”: [
“linuxfb”
]
},
“className”: “QLinuxFbIntegrationPlugin”,
“debug”: false,
“version”: 329989
}

Got keys from plugin meta data (“linuxfb”)
QFactoryLoader::QFactoryLoader() looking at “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/platforms/libqminimal.so”
Found metadata in lib /home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/platforms/libqminimal.so, metadata=
{
“IID”: “org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3”,
“MetaData”: {
“Keys”: [
“minimal”
]
},
“className”: “QMinimalIntegrationPlugin”,
“debug”: false,
“version”: 329989
}

Got keys from plugin meta data (“minimal”)
QFactoryLoader::QFactoryLoader() looking at “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/platforms/libqoffscreen.so”
Found metadata in lib /home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/platforms/libqoffscreen.so, metadata=
{
“IID”: “org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3”,
“MetaData”: {
“Keys”: [
“offscreen”
]
},
“className”: “QOffscreenIntegrationPlugin”,
“debug”: false,
“version”: 329989
}

Got keys from plugin meta data (“offscreen”)
QFactoryLoader::QFactoryLoader() looking at “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/platforms/libqvnc.so”
Found metadata in lib /home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/platforms/libqvnc.so, metadata=
{
“IID”: “org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3”,
“MetaData”: {
“Keys”: [
“vnc”
]
},
“className”: “QVncIntegrationPlugin”,
“debug”: false,
“version”: 329989
}

Got keys from plugin meta data (“vnc”)
QFactoryLoader::QFactoryLoader() looking at “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/platforms/libqxcb.so”
Found metadata in lib /home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/platforms/libqxcb.so, metadata=
{
“IID”: “org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3”,
“MetaData”: {
“Keys”: [
“xcb”
]
},
“className”: “QXcbIntegrationPlugin”,
“debug”: false,
“version”: 329989
}

Got keys from plugin meta data (“xcb”)
loaded library “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/platforms/libqxcb.so”
loaded library “Xcursor”
QFactoryLoader::QFactoryLoader() checking directory path “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/xcbglintegrations” …
QFactoryLoader::QFactoryLoader() checking directory path “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/platformthemes” …
QFactoryLoader::QFactoryLoader() checking directory path “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/platforminputcontexts” …
QFactoryLoader::QFactoryLoader() checking directory path “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/styles” …
QFactoryLoader::QFactoryLoader() checking directory path “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/iconengines” …
QFactoryLoader::QFactoryLoader() checking directory path “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats” …
QFactoryLoader::QFactoryLoader() looking at “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqgif.so”
Found metadata in lib /home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqgif.so, metadata=
{
“IID”: “org.qt-project.Qt.QImageIOHandlerFactoryInterface”,
“MetaData”: {
“Keys”: [
“gif”
],
“MimeTypes”: [
“image/gif”
]
},
“className”: “QGifPlugin”,
“debug”: false,
“version”: 329989
}

Got keys from plugin meta data (“gif”)
QFactoryLoader::QFactoryLoader() looking at “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqicns.so”
Found metadata in lib /home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqicns.so, metadata=
{
“IID”: “org.qt-project.Qt.QImageIOHandlerFactoryInterface”,
“MetaData”: {
“Keys”: [
“icns”
],
“MimeTypes”: [
“image/x-icns”
]
},
“className”: “QICNSPlugin”,
“debug”: false,
“version”: 329989
}

Got keys from plugin meta data (“icns”)
QFactoryLoader::QFactoryLoader() looking at “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqico.so”
Found metadata in lib /home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqico.so, metadata=
{
“IID”: “org.qt-project.Qt.QImageIOHandlerFactoryInterface”,
“MetaData”: {
“Keys”: [
“ico”,
“cur”
],
“MimeTypes”: [
“image/vnd.microsoft.icon”
]
},
“className”: “QICOPlugin”,
“debug”: false,
“version”: 329989
}

Got keys from plugin meta data (“ico”, “cur”)
QFactoryLoader::QFactoryLoader() looking at “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqjpeg.so”
Found metadata in lib /home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqjpeg.so, metadata=
{
“IID”: “org.qt-project.Qt.QImageIOHandlerFactoryInterface”,
“MetaData”: {
“Keys”: [
“jpg”,
“jpeg”
],
“MimeTypes”: [
“image/jpeg”,
“image/jpeg”
]
},
“className”: “QJpegPlugin”,
“debug”: false,
“version”: 329989
}

Got keys from plugin meta data (“jpg”, “jpeg”)
QFactoryLoader::QFactoryLoader() looking at “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqsvg.so”
Found metadata in lib /home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqsvg.so, metadata=
{
“IID”: “org.qt-project.Qt.QImageIOHandlerFactoryInterface”,
“MetaData”: {
“Keys”: [
“svg”,
“svgz”
],
“MimeTypes”: [
“image/svg+xml”,
“image/svg+xml-compressed”
]
},
“className”: “QSvgPlugin”,
“debug”: false,
“version”: 329989
}

Got keys from plugin meta data (“svg”, “svgz”)
QFactoryLoader::QFactoryLoader() looking at “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqwbmp.so”
Found metadata in lib /home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqwbmp.so, metadata=
{
“IID”: “org.qt-project.Qt.QImageIOHandlerFactoryInterface”,
“MetaData”: {
“Keys”: [
“wbmp”
],
“MimeTypes”: [
“image/vnd.wap.wbmp”
]
},
“className”: “QWbmpPlugin”,
“debug”: false,
“version”: 329989
}

Got keys from plugin meta data (“wbmp”)
QFactoryLoader::QFactoryLoader() looking at “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqwebp.so”
Found metadata in lib /home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqwebp.so, metadata=
{
“IID”: “org.qt-project.Qt.QImageIOHandlerFactoryInterface”,
“MetaData”: {
“Keys”: [
“webp”
],
“MimeTypes”: [
“image/webp”
]
},
“className”: “QWebpPlugin”,
“debug”: false,
“version”: 329989
}

Got keys from plugin meta data (“webp”)
loaded library “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqgif.so”
loaded library “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqicns.so”
loaded library “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqico.so”
loaded library “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqjpeg.so”
loaded library “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqsvg.so”
loaded library “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqwbmp.so”
loaded library “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/imageformats/libqwebp.so”
loaded library “libdbus-1”
QMetaObject::connectSlotsByName: No matching signal for on_pushButton_clearBak_clicked()
QFactoryLoader::QFactoryLoader() checking directory path “/home/xinke/桌面/lijing/PTFEditor (qt5.9.5)/accessible” …

可以看出程序启动前加载的过程;

读取可执行文件的依赖库
readelf -d xxxx(可执行文件名)
效果:
Dynamic section at offset 0x1b8018 contains 33 entries:
标记 类型 名称/值
0x0000000000000001 (NEEDED) 共享库:[libzint.so.2.9]
0x0000000000000001 (NEEDED) 共享库:[libQt5Widgets.so.5]
0x0000000000000001 (NEEDED) 共享库:[libQt5Gui.so.5]
0x0000000000000001 (NEEDED) 共享库:[libQt5Core.so.5]
0x0000000000000001 (NEEDED) 共享库:[libpthread.so.0]
0x0000000000000001 (NEEDED) 共享库:[libstdc++.so.6]
0x0000000000000001 (NEEDED) 共享库:[libm.so.6]
0x0000000000000001 (NEEDED) 共享库:[libgcc_s.so.1]
0x0000000000000001 (NEEDED) 共享库:[libc.so.6]
0x000000000000000f (RPATH) Library rpath: [.:/opt/PMY/aarch64/qt595-aarch64/lib]
0x000000000000000c (INIT) 0x411990
0x000000000000000d (FINI) 0x4360c4
0x0000000000000019 (INIT_ARRAY) 0x5c7000
0x000000000000001b (INIT_ARRAYSZ) 16 (bytes)
0x000000000000001a (FINI_ARRAY) 0x5c7010
0x000000000000001c (FINI_ARRAYSZ) 8 (bytes)
0x0000000000000004 (HASH) 0x400260
0x0000000000000005 (STRTAB) 0x405d28
0x0000000000000006 (SYMTAB) 0x401c78
0x000000000000000a (STRSZ) 30309 (bytes)
0x000000000000000b (SYMENT) 24 (bytes)
0x0000000000000015 (DEBUG) 0x0
0x0000000000000003 (PLTGOT) 0x5c8750
0x0000000000000002 (PLTRELSZ) 12360 (bytes)
0x0000000000000014 (PLTREL) RELA
0x0000000000000017 (JMPREL) 0x40e948
0x0000000000000007 (RELA) 0x40d9e8
0x0000000000000008 (RELASZ) 3936 (bytes)
0x0000000000000009 (RELAENT) 24 (bytes)
0x000000006ffffffe (VERNEED) 0x40d8f8
0x000000006fffffff (VERNEEDNUM) 6
0x000000006ffffff0 (VERSYM) 0x40d38e
0x0000000000000000 (NULL) 0x0

可以查看到rpath指向位置;

ldd xxx(可执行文件名) 可以查看依赖库
file xxx(可执行文件名) 可以查看指令集

关于Pro文件编译知识点:
QMAKE_LFLAGS +=-Wl,-rpath=./lib
功能:
程序加载时,先从当前目录下的lib目录中加载;

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值