假設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