android 通过gdbserver 调试c++

有些事真的很烦锁,但是又不得不做

环境:ubuntu12.04

            ndkr9

            android sdk

            android 4.2.2 盒子,已root


过程:

       1、c++ 编写程序

       2、ndk-build  NDK_DEBUG=1 //强制生成调试信息

       3、adb push gdbserver /system/bin   //把 生成的libs下armeabi下的 gdbserver 放到android盒子里,放到system/bin 下,可以直接启动

       4、adb push  程序 /data/bin 下,这里一定要注意,程序不是libs下的 而是obj下的 obj/local/armeabi/ 下的程序,原因就是:默认情况下,android的编译系统在编译程序时已经使用了“-g”选项,即已经生成了调试信息。但是在生成最终的文件时,是经过strip的,去除了所有到调试信息。所以最终我们到调试目标要使用strip之前的文件。

      5、调试步骤

            a、启动终端 进入android,命令:

                  adb shell

            b、在android终端启动调试, 命令:

                  cd /data/bin    //程序放在了这里

                  gdbserver  :1234 程序   //gdbserver 启动监听端口号,用于和pc机通信 调试

           c、在启动终端,启动gdb, 命令:

                arm-linux-androideabi-gdb   //这个玩意在ndk  toolchin 里,能找到吧

           d、执行:

                shell adb forward tcp:1234 tcp:1234

                target remote localhost:1234

                file obj/local/armeabi/程序

                就可以调试了


你可能感兴趣的:(android 通过gdbserver 调试c++)