我正在调试 Qt 应用程序并尝试在调试器中查看 QT 字符串对象数据。我指的是这个博客,它展示了如何做到这一点,但是,我无法访问源代码。windbg 缺乏显示基本 QT 数据的能力。在windbg 中,我想查看所有QtStrings 被传递给任何Qt-API 的内容。
在以下由 toString() 返回的反汇编字符串对象被传递给 setHttpUserAgent API 时,参数被放置在 rcx 和 rdx 寄存器上。我想在windbg/任何调试器中查看这些字符串。
.text:00000001400424CC lea rdx, [rbp+57h+var_90]
.text:00000001400424D0 mov rcx, rax
.text:00000001400424D3 call cs:?toString@QVariant@@QEBA?AVQString@@XZ ; QVariant::toString(void)
.text:00000001400424D9 nop
.text:00000001400424D9 ; }
.text:00000001400424DA mov rdx, rax
.text:00000001400424DD mov rcx, r14
.text:00000001400424E0 call cs:?setHttpUserAgent@QWebEngineProfile@@QEAAXAEBVQString@@@Z ; QWebEngineProfile::setHttpUserAgent(QString const &)
.text:00000001400424E6 nop
.text:00000001400424E6 ; }
为此,我相信我需要更好地了解 Qt 字符串的内存布局。如果有任何文件可以帮助我弄清楚,请告诉我。
提前致谢。