royqh1979 / RedPanda-CPP

A light-weight C/C++ IDE based on Qt
GNU General Public License v3.0
953 stars 103 forks source link

CPU 信息窗口的寄存器显示不正确 #319

Closed West-Pavilion closed 5 months ago

West-Pavilion commented 5 months ago

CPU 信息窗口的寄存器显示不正确

在跟踪 虚函数动态派发 时发现的问题。

在 CPU 信息窗口 右边的 寄存器视图 中,发现寄存器的前四个是 eax,ecx,edx 和 ebx,这看起来顺序很奇怪

实际上,这确实是一个显示上的错误,因为如果单步跟踪汇编指令,就会发现 寄存器视图 中显示的 ebx 其实是 edx,因为在汇编指令对 rdx 寄存器 操作时,寄存器视图 中变化的是 ebx;在汇编指令对 rcx 寄存器 操作时,寄存器视图 中变化的是 edx

也就是说,正确的顺序应该是 eax,ebx,ecx 和 edx

我尝试着找到了 royqh1979/RedPanda-CPP/RedPandaIDE/debugger/debugger.cpp 这个文件,对照着这个文件中各寄存器出现的顺序,似乎之后的寄存器在实际显示时的顺序也不正确,但是我并没有成功找到导致此现象的原因

此外,在调试 64 位的程序时,寄存器视图 中显示的是 32 位的寄存器,这可能会让人感到迷惑

下面是演示视频:

https://github.com/royqh1979/RedPanda-CPP/assets/111393157/847b0916-a551-432c-9aa0-20a6f4960964

视频中使用的代码文件可以在 https://github.com/royqh1979/RedPanda-CPP/issues/316 的测试代码文件中找到