在 OSX Mountain Lion 上,我能够编译
mach_inject
以及包含的测试项目。这按预期工作,注射功能完美。
我现在尝试使用 Qt 项目中相同的
mach_inject
框架,由 QtCreator 编译。我尝试过 clang 和 gcc 编译器。
一切都编译并且应用程序运行,但是当调用 mach_inject 时,我收到错误:
mach_inject failing.. (os/kern) invalid address
追踪
mach_inject
,失败发生在最后一步,调用thread_create_running
时。
有谁知道这里出了什么问题吗?我假设这与 Qt 提供的编译器选项与 XCode 使用的编译器选项有关,但可能完全错误!
问题原来是 32 / 64 位不兼容 - 因为(自然)你无法将 64 位捆绑包注入 32 位应用程序!
如果其他人有类似的问题,可以使用 mach_inject_bundle_stub 进行调试,因为由于其他问题可能会出现来自内核的相同错误。