我的环境是vmware+ubuntu18+ShadowSocks(科学上网)
1.ShadowSocks设置为“全局模式”,同时打开“允许其他设备连接”。如下图所示:

2.查询本机的IP地址:

3.虚拟机的VPN设置,IP地址改成你本机的IP地址:

4.设置git:
设置代理 http/https协议(clone https://前缀的repo会走ss)
git config --global http.proxy 'socks5://192.168.31.200:1080'
git config --global https.proxy 'socks5://192.168.31.200:1080'
如果想停止代理可以是用如下命令:
git config --global --unset http.proxy
git config --global --unset https.proxy
5.下载depot_tools:
我的clone目录为:/home/liangliangli
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
如果无法连接:那么就是前面的步骤没弄好,无法连接到地址。
clone好之后设置下环境变量(注意:目录改成自己对应的目录):
编辑~/.bashrc文件:vim ~/.bashrc
在文件末尾加上:
’ export PATH="$PATH:/home/liangliangli/depot_tools" '

可以使用命令'echo $PAHT'测试是否设置成功:

6.编译breakpad:
首先需要安装python,以及C编译环境,否则 configure 无法使用。
1.安装C编译环境:(解决:configure: error: no acceptable C compiler found in $PATH)
- sudo apt-get update
- sudo apt-get upgrade
- sudo apt-get install build-essential
2.安装Python:
- sudo apt-get update
- sudo apt-get install python3.6
3.获取breakpad:(我的操作目录在:/home/liangliangli)
- mkdir breakpad && cd breakpad
- fetch breakpad (第5步的目的就是为了可以使用fetch命令)
- cd src
到这里先别编译。把breakpad/src/src下面的代码全部拷贝到大佬Sample的Sample/Chapter01-master/breakpad-build/src/main/cpp/external/libbreakpad/src目录下,选择全部覆盖。接下来就开始编译breakpad获取工具: - ./configure && make
工具的目录:/home/liangliangli/breakpad/src/src/processor
4.打开Android Studio打开工程安装Sample App,进入界面点击Crash(为了方便还是授权SD访问)。
5.生成crashLog.txt文件:
-
把手机crashDump下的dmp文件拷贝到 '/home/liangliangli/crashDump' 目录下
dmp文件.png
-
cd /home/liangliangli/crashDump
-
/home/liangliangli/breakpad/src/src/processor/minidump_stackwalk 91da682d-7c84-49b7-2b0a7bb8-6182697f.dmp >crashLog.txt
生成crashLog.png

6.找出报错的函数:
从上图可以看到我手机的CPU:arm64
- cd /Android/Sdk/ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin
- ./aarch64-linux-android-addr2line -f -C -e /home/liangliangli/Sample/Chapter01-master/sample/build/intermediates/transforms/mergeJniLibs/debug/0/lib/arm64-v8a/libcrash-lib.so 0x600
如果手机CPU是32位:
- cd /Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin#
- ./arm-linux-android-addr2line -f -C -e /home/liangliangli/Sample/Chapter01-master/sample/build/intermediates/transforms/mergeJniLibs/debug/0/lib/arm64-v8a/libcrash-lib.so 0x600
最后一个参数是上图蓝色框框里面的偏移量:共享库libcrash-lib.so的开始虚拟地址+偏移量0x600就是我们奔溃函数的位置了。

网友评论