首页 > 编程语言 >GDB-4——Android设备中使用GDB调试程序的例子

GDB-4——Android设备中使用GDB调试程序的例子

时间:2022-11-08 12:00:50浏览次数:36  
标签:17 mytest gdb GDB 调试程序 Android include LOCAL dir

 

一、一个简单的例子

1. 实验Demo

(1) Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= mytest.c
LOCAL_MODULE:= mytest
LOCAL_C_FLAGS += -g -O0
LOCAL_SHARED_LIBRARIES := libc
include $(BUILD_EXECUTABLE)

(2) 测试程序

 1 #include <stdio.h>
 2 #include <unistd.h>
 3 
 4 static void my_sleep_func(void) {
 5         int i;
 6 
 7         for(i = 0; i < 10; i++) {
 8                 usleep(5000);
 9         }
10 }
11 
12 int main()
13 {
14 
15         int *p = NULL;
16 
17         printf("Hello World!\n");
18 
19         my_sleep_func();
20 
21         *p = 110; //dump
22 
23         return 0;
24 }

2. out目录下生成的可用文件

obj/EXECUTABLES/mytest_intermediates/LINKED/mytest //OK
obj/EXECUTABLES/mytest_intermediates/mytest //不能用,list 命令显示"No symbol table is loaded"
symbols/system/bin/mytest //OK
system/bin/mytest //不能用,list 命令显示"No symbol table is loaded"

3. 实验示范

先将编译生成的 mytest 可执行elf文件push到设备的 /data/local/tmp 目录下,然后将测试文件也push到这个目录下。然后启动 adeb,使用其中的 gdb 工具进行调试。

root@localhost:/data/local/tmp# gdb mytest_1
(gdb) l
3       vendor/oplus/frameworks/cmd/mytest/mytest.c: No such file or directory. //若没有将.c文件放到当前目录或
(gdb) show dir
Source directories searched: $cdir:$cwd //应该是表示compile dir 和 current dir为两个默认的源文件搜索路径
(gdb) b 15
Breakpoint 1 at 0x1064: file vendor/oplus/frameworks/cmd/mytest/mytest.c, line 17. //和源文件行号对应不上,b 15却显示的是17
(gdb) r
Starting program: /data/local/tmp/mytest_1
Breakpoint 1, main () at vendor/oplus/frameworks/cmd/mytest/mytest.c:17
17              printf("Hello World!\n");
(gdb) c
Continuing.
Hello World! //输出后就正常oops死机了

 

标签:17,mytest,gdb,GDB,调试程序,Android,include,LOCAL,dir
From: https://www.cnblogs.com/hellokitty2/p/16869220.html

相关文章

  • GDB-2——GDB调试多线程
     一、简介前一博文实际上已经介绍了多线程的调试方法,这节专门进行一下总结。 二、调试多线程1.使用gdb将程序跑起来,然后按Ctrl+C将程序中断下来,使用infoth......
  • android 删除文件错误:open failed: EBUSY (Device or resource busy)
    引用:​​http://stackoverflow.com/questions/11539657/open-failed-ebusy-device-or-resource-busy​​IhavethebigAnswer!!TheProblemcomesfromtheAndroidSys......
  • android studio 新项目导入时怎么设置
    导入步骤修改gradle.build文件中的,结合个人环境设置classpath'com.android.tools.build:gradle:3.2.0'compileSdkVersion27buildToolsVersion"28.0.2"2.修改文件gradle......
  • 编译vlc-android
    1.说明时间:20191105系统:虚拟机里的ubuntu1604可以参照​​​https://wiki.videolan.org/AndroidCompile​​。这个文档会更新,注意。2.步骤2.1配置环境JDKsudoapt-get......
  • android-code-getip
    publicStringgetIP(){try{for(Enumeration<NetworkInterface>en=NetworkInterface.getNetworkInterfaces();en.hasMoreElements();){......
  • android--查看keystore文件签名信息
    Java\jdk1.6.0_14\bin\keytool-list-v-keystore keystoreName输入密码就可以了。C:\tmp\0>keytool密钥和证书管理工具命令: -certreq      生......
  • android_文本垂直滚动
    这个自定义view主要实现的是垂直文本自动滚动,当文本高度超出垂直高度时自动滚动。也可以修改成其他条件触发滚动。参考了网上一篇文章,找不到出处了。packagecom.serviatech......
  • android-code-saveLog
    一个工具类。第一个用来将logcat保存到文件,第二个用来获得logcat字符串。publicclassLogcat{publicfinalstaticStringTAG="VLC/Util/Logcat";/***Wr......
  • android-code-调整音量
    这是不弹出界面的方式:/***@paramvalue*0-15*/publicvoiddealCMDSound(intvalue){AudioManagermAudioManager=(AudioManager)getSy......
  • Android 接收微信、QQ其他应用打开,第三方分享
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助在AndroidManifest.xml注册ACTION事件<activityandroid:name="com.test.app.MainActivity"......