假设Apple使用私有框架DictationServices.framework,它具有符号/方法dictationEnabled的@interface SODictationPreferences。如何以以编程方式在该方法上设置断点(使用ObjectiveC)?如何在专用接口方法上设置gdb断点
1
A
回答
0
可能通过ptrace的?
ptrace -- process tracing and debugging
概要 的#include 的#include
int
ptrace(int request, pid_t pid, caddr_t addr, int data);
说明 ptrace的()提供跟踪和调试设施。它允许一个进程(追踪进程)控制另一个进程(追踪进程)。
0
这里是如何做到这一点的非编程:
root:~/DictationServices.framework$ ps -Afw | grep Preferences
501 44726 44621 0 7:46PM ?? 0:02.60 /Applications/System Preferences.app/Contents/MacOS/System Preferences
// pid of /Applications/System Preferences.app == 44726
(gdb) attach 44726
Attaching to process 44726.
Reading symbols for shared libraries + done
Reading symbols for shared libraries +++.+.+.+.+++++++..+++++++ done
Reading symbols for shared libraries + done
0x00007fff8befe686 in mach_msg_trap()
(gdb) b dictationEnabled
Breakpoint 3 at 0x10e57bc93
(gdb) c
Continuing.
Breakpoint 3, 0x000000010e57bc93 in -[SODictationPreferences dictationEnabled]()
(gdb)
相关问题
- 1. GDB无法设置断点
- 2. Gdb在多态方法上设置断点
- 3. 在GDB中设置断点
- 4. 如何在运算符<上使用GDB设置断点?
- 5. 使用gdb在LibC中设置断点
- 6. 关闭确认上设置断点GDB
- 7. GDB无法在共享库上设置断点
- 8. 在C文件中设置GDB断点
- 9. GDB:设置在非源文件断点
- 10. 在GDB的每一行设置断点
- 11. 如何使用共享库函数在gdb中设置断点
- 12. gdb:如何确认函数上设置了断点?
- 13. 在emacs(或DDD)中使用gdb时无法设置断点
- 14. 在gdb中如何在任何有特定单词的行上设置断点?
- 15. 退出信号设置GDB中断点
- 16. 如何在gdb中为C++设置operator()的断点?
- 17. gdb:如何在带空格的文件中设置断点
- 18. gdb,在文件中的所有函数上设置断点
- 19. 在std :: cerr上打印某些内容时设置gdb断点
- 20. 在gdb上设置errno的观察点
- 21. 如何设置gdb中的python函数的断点
- 22. 无法在GDB中设置观察点
- 23. gdb挂钩设置中断
- 24. pthread_create上的gdb断点
- 25. 如何找到我设置断点的方法的调用者?
- 26. 如何在monodevelop中设置别人内部方法的断点
- 27. 如何在VS2010中的每种方法中设置断点
- 28. Mac OS X Mavericks - gdb - 附加进程时无法设置断点
- 29. 通过python接口在gdb的断点处执行命令
- 30. 如何在gdb中为函数的所有调用设置断点?
对于缺少更好的答案,我会接受这一点。 – Anno2001 2014-09-10 14:35:21
显然,您需要找出目标方法驻留的位置,然后修改该过程以插入调试方法调用。 http://www.linuxjournal.com/article/6210 – Anno2001 2014-09-10 14:41:33