为啥用vscode?
调试为什么要用vscode呢?这是个很好的问题,功能强大的调试工具有很多,像Android studio,eclipse,vs等拥有很强大的代码调试功能,但为什么要用vscode呢,我的答案只有一个,因为它小啊,这就是我青睐它的原因,
另一个原因就是它的插件很多,我完全可以按照自己的需求来定制一个对于我来说完美且精简的代码调试工具,世界上没有比这更完美的事情了。
环境配置
1,vscode客户端(稳定版和测试版都可以,在windows端安装)
2,wsl(Windows系统中的Linux—WSL安装及简单使用)
3,ndk编译环境(Linux下ndk的安装和配置:我们的配置是在wsl中配置的)
解释一下我们为什么要用wsl:大量的软件开发人员都习惯用linux系统开发,因此在诞生出了虚拟机vmware,在本人对虚拟机的亲自体验过程中,亲身体会了虚拟机的强大性能,但也体会到了其对资源的占用过于严重,并且本身并不会释放占用过的空间,导致如果不去手动回收空间,其占用空间会随着使用时间不停增长。在这个尴尬的时候,wsl出世了,虽然初版问题很多,但随着微软不停的修复,现在已经趋于稳定了。
说了这么多,我们开始配置debug吧
打开vscode,我们需要下载图中标识的两个插件,用以远程连接wsl,如连接状态如图所示,则表示连接成功,反之,则点击使其连接。
连接上wsl后,我们开始配置launch文件:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch program",
"type": "cppdbg",
"request": "launch",
"program": " ", //debug的可执行程序路径,最好填绝对路径,
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"setupCommands": [{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true }],
// "preLaunchTask": "g++ build active file",
"miDebuggerPath": " ", //debug的gdb路径
"miDebuggerServerAddress": ":12345" //远程连接的端口号
}
}
在编译可执行文件或库时,需要编译带符号表的目的文件,如果要debug手机中某个进程,例如如果想debug fingerprintd,那么需要编译Android源码得到带符号表的fingerprintd可执行文件,launch配置文件中可执行文件路径即填fingerprintd执行文件路径 。
将编译得到的可执行文件和库使用adb push进手机使其运行,adb shell进入手机执行下列命令:
然后点击vscode中的debug按钮:
现在就可以设置断点开始愉快的调试啦!!!!
认真开始