TL; DR:有没有办法找出哪些地址范围对我在调试器中运行的应用程序有效?或者是一个确认或否认地址有效性的呼叫(c stdlib
或Cocoa)。
(我所指的地址值来自应用程序的POV,即在VM翻译之前。)
我在解除引用ENV_BAD_ACCESS
返回的指针时遇到(间歇性的)mmap()
失败。 (这是第三方代码。)
返回的值不是MAP_FAILED
又是-1。 Errno
未设置。
虽然典型值(例如0x23F27000
)看起来不像我希望看到的地址(例如0x70000xxxxxxx
),但我无法通过检查来判断地址是否错误。 。但是,良好的mmap()
地址和坏地址在这方面看起来很相似。无论如何,自从6502芯片以来,我还没有与硬件保持联系。像渡渡鸟一样。 (芯片,不是我!)