原创 有贊移動熱修復平臺建設

一、背景1.1 爲什麼要搭建熱修復平臺隨着公司的快速發展,需求的快速增加,App迭代也越來越頻繁,如果移動應用出現問題,不僅僅影響用戶體驗,還會影響公司口碑,甚至可能造成資損。需要快速修復線上問題,對比常規的開發流程而言,熱修復更加靈活方便

原创 ARM架構kprobe應用及實現分析(1.0 簡單示例)

網絡對krpobe的實現機制及擴展都不是特別詳細 由於工作需要及個人愛好,正好有這個機會好好學習此模塊及應用到實際中 並將整個應用擴展及當時的分析情況,詳細記錄下來,希望對感興趣的人有些許幫助 最開始還是先給個具體的栗子: 參考: ker

原创 ARM架構kprobe應用及實現分析(6.0 導出堆棧的值)

上篇講過了導出寄存器的值 但是當函數參數多餘4個的話(R0 R1 R2 R3 ),其他的值會保存在堆棧中,所以必須導出SP附近的值才能查看其它參數的值 此函數實現如下: 第一個參數爲SP的值,第二個是一SP爲中心要打印周圍棧的數據 sta

原创 android monitor tool (8.0 模擬發送按鍵及觸摸屏事件實現)

首先看下操作界面:   你可以可以遠程控制手機,模擬發送觸摸屏及按鍵事件 (應用場合:開發早期觸摸屏還沒確定及判斷問題是驅動層還是framework / app 層) 先講發送按鍵事件的實現(如下面是發送KEYCODE_HOME):

原创 怎麼找到android系統input命令的實現代碼

首先,我的固定思維認爲system層中的命令大部分是用C語言寫的。 所以一直以爲input命令也是C語言寫的,但是找了很多地方都找不到對應其源代碼。 最後在framework開發人員幫助下找到,特此記錄一下: 1    首先找到input

原创 ARM寄存器簡介

原创 ARM 架構 dump_stack 實現分析(1.0 具體實例)

dump_stack也就是我們平時說的backtrace對分析,對異常或crash發生的時候,具有重要的意義   每種架構會有或多或少的區別,如現在linux kernel支持如下架構: alpha  avr32     c6x   fr

原创 ARM 架構 dump_stack 實現分析(3.0 printk %pS選項實現)

上篇提到了函數: void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long frame) { #ifdef CONFIG_KALLSY

原创 kernel list 與普通list區別及其最牛叉的地方

參考:http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/             http://blog.csdn.net/yangzhiloveyou/article/

原创 ARM架構kprobe應用及實現分析(2.0 register_kprobe error 38)

最開始 register_kprobe 的時候,返回錯誤,一直註冊不成功,且返回錯誤號爲38 最後發現是一些kernel編譯的配置沒有打開導致的. 所以當你編譯kernel之前請確保下面選項是打開支持的:    general setup

原创 CTP觸摸屏調試之--getevent

有的時候,需要判斷問題是出在kernel驅動層或者app framework層, 這個時候getevent 命令就派上大用場了: 1   假如不知道CTP用的是哪個驅動名的話:      getevent     (會列出/dev/inp

原创 perror實現分析(3.0: Linux支持的系統錯誤)

參考: bionic/libc/include/sys/_errdefs.h __BIONIC_ERRDEF( 0 , 0, "Success" ) __BIONIC_ERRDEF( EPERM

原创 ARM架構kprobe應用及實現分析(7.0 自動顯示參數的值)

通過前面的介紹 知道參數在寄存器及堆棧的位置,我們就有可能顯示參數的值 jprobe也可以顯示參數的值,但是其有缺點:不能探測函數時加上偏移量 具體上下文請參考: ARM架構kprobe應用及實現分析(3.0 被探測函數說明) 導出參數

原创 adb push常見問題

有的時候我們直接 adb push someting   android 會遇到下面的錯誤: failed to copy 'someting' to 'android': Read-only file system 這個時候你只需要a