我最近设置一个断点,其中初始地址是:断点有两个地址?
(gdb) b viewscreen_movieplayerst::create(char, viewscreenst*)
Breakpoint 1 at 0x804beec
和第二(常住地址)是:
(gdb) run
Breakpoint 1, 0xf7b46630
in viewscreen_movieplayerst::create(char,viewscreenst*)()
from/path/libs/libgraphics.so
这是因为该可执行文件被剥离?还是执行可执行文件并且地址发生变化?
而且,主要是:
(gdb) b main
Breakpoint 1 at 0x804bdec
这似乎很接近的地址,所以我会包括它。
编辑:
What does the concept of relocation mean?
So most of the binary is composed of reloc table?
你的问题对我来说并不完全清楚。如果你在运行时地址不同(你可以使用info break来检查),那么是的,它可能是运行时重定位。如果它实际上有两个地址,那么可能由于各种编译器优化而发生。 –
@Tom Tromey在什么情况下会有2个地址?如果没有,你给我了我正在寻找的“运行时重定位”标语 – Jim
由于内联和重载分辨率的原因,推测一个函数可能有多个地址。 – kfsone