Advertisement
Guest User

Untitled

a guest
May 11th, 2017
584
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. Terry Li (terry.li@nextdrive.io)
  2. 我們現在的compiler是GNU的,不是android,再加上build system也不是android,要debug segfault目前是比較困難的
  3. 我們的compiler flags disable掉很多debug function所以不像android在crash時可以backtrace
  4. 這部份需要另外做,例如利用valgrind的library來監控heap usage
  5. 好像叫libmem什麼的
  6. ltrace在編譯時要加-rdynamic和-g
  7. strace不用,不過strace比較難看得出在幹嘛
  8. 因為是system call
  9. 但配合自己寫的部份下去看,應該也不錯
  10. strace和ltrace可以看得出在segfault之前發生什麼事
  11. 但是要用command line跑,不能用rc方式啟動
  12.  
  13. Jon Lin (jon.lin@nextdrive.io)
  14. 剛剛跑了半小時,還在跑,不好複製。了解,我來試一下 "ltrace在編譯時要加-rdynamic和-g"
  15.  
  16. Terry Li (terry.li@nextdrive.io)
  17. 系統沒有ltrace
  18. 但有strace
  19.  
  20. Jon Lin (jon.lin@nextdrive.io)
  21. 所以只能用strace
  22.  
  23. William (william.liang@nextdrive.io)
  24. 沒有debugger的option是 不方便做 source level的追蹤, 不過如果單純對segfault要定位, 還是很方便的喔, 直接attach process 在產生問題的時候他會停下來, 我們就可以知道它是發生在哪一個 function 裡頭。 如果 symbol 被移除掉, 我們也可透過 adb 在進行反組譯, 再透過對 binary做objdump, 找出跟原始碼對應的關係 就可以進行搜尋 還是可以定位出來 :)
  25.  
  26. Terry Li (terry.li@nextdrive.io)
  27. 如果一直可以複製,會比較好解
  28.  
  29. William (william.liang@nextdrive.io)
  30. 以前在沒有 ICE 的情況要去找 Kernel 的問題的時候 常常有的時候會需要用到這個方式
  31.  
  32. Jon Lin (jon.lin@nextdrive.io)
  33. 不熟得研究一下
  34.  
  35. William (william.liang@nextdrive.io)
  36. Strace 好用喔, 不太需要去學
  37.  
  38. Terry Li (terry.li@nextdrive.io)
  39. jon先試看看能否百分百複製
  40. 在複製前不要改code
  41.  
  42. Jon Lin (jon.lin@nextdrive.io)
  43. 目前還在跑,沒死
  44.  
  45. Terry Li (terry.li@nextdrive.io)
  46. 可能懷疑的地方直接改,可能問題修正了,也有可能讓它變難複製
  47.  
  48. Jon Lin (jon.lin@nextdrive.io)
  49. 了解
  50.  
  51. Terry Li (terry.li@nextdrive.io)
  52. 再來是有些常見的... 就是用來print debug message的ALOG或printf,也會segfault
  53.  
  54. Jon Lin (jon.lin@nextdrive.io)
  55. 沒錯
  56. printf a null string
  57.  
  58. Terry Li (terry.li@nextdrive.io)
  59. 在開發階段時,我會故意在CFLAGS裡加-Wall及-Wextra有些warning就會告訴你這地方怪怪的
  60.  
  61. Jon Lin (jon.lin@nextdrive.io)
  62. good comment
  63. compile warning 很有用
  64.  
  65. Terry Li (terry.li@nextdrive.io)
  66. 對~
  67. 經常去修正compile warning也會讓coding進步
  68.  
  69. Jon Lin (jon.lin@nextdrive.io)
  70. 沒錯
  71.  
  72. Jon Lin (jon.lin@nextdrive.io)
  73. 千萬不能忽略他們
  74.  
  75. William (william.liang@nextdrive.io)
  76. Exactly, 嵌入式系統由於 debug 環境比較有限制,通常都會建議至少用 -WallWilliam (william.liang@nextdrive.io)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement