先废话两句,这篇文章可能有所缺陷,因为我并没有条件去测试动态库的调试。(主要是因为是自己的手机不想乱放各种so)

所以我只能说有空的话我会去进行下测试,这里就先这样了。

1、测试代码gdb-test.c

#include <stdio.h>

int main() {

printf("this is gdb test !!!\n");

}

2、Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_CFLAGS := -g

LOCAL_STRIP_MODULE := flase   #禁止对最终生成的gdb-test进行strip处理

LOCAL_MOULE_TAGS := optional
LOCAL_SRC_FILES := gdb-test.c
LOCAL_MODULE        := gdb-test
include $(BUILD_EXECUTABLE)

3、拷贝gdb-test gdbserver到device的data目录下(这里只是为了简单)

4、在shell中输入

# adb shell

进入到device中的shell中

# cd data

# ./gdbserver :2000 ./gdb-test  (注:这里可以给gdb-test传参)

我们给gdbserver使用的端口为2000

成功的话你会看到

# Listening on port 2000

说明成功开启了服务

5、 在PC上执行

adb forward tcp:2000 tcp:2000

6、在运行PC上的gdb,具体路径为

#arm-linux-androideabi-gdb ./gdb-test

注意,这里的gdb-test的位置非常重要,因为你可以看到在libs下有个gdb-test,在obj下也有,为了保证符号表

能成功进行加载,这里必须使用在obj下的gdb-test,因为libs中生成的始终是去掉符号表的,只有objs中的才是真正可调试的。

成功后进入gdb中,输入

# (gdb)target remote :2000

android中使用gdbserver调试c程序的更多相关文章

  1. 【转】Android 学习笔记——利用JNI技术在Android中调用、调试C++代码

    原文网址:http://cherishlc.iteye.com/blog/1756762 在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在And ...

  2. [转][android][利用JNI技术在Android中调用、调试C++代码]

    在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在Android中会生成Linux系统下的.so文件(好吧,其实我基本没用过Linux). 没写过 ...

  3. 在vscode中怎样debug调试go程序

    随着互联网时代的飞速发展,我们编码使用的开发利器也在不断更新换代,古话说工欲善其事必先利其器,对于Java开发者而言,eclipse和idea这两款神器各有千秋,因自己的爱好可以选取不同的IDE,但是 ...

  4. Android 中的反调试技术

    比较简单的有下面这两种 调试端口检测, 23946(0x5D8A) Demo: void CheckPort23946ByTcp() { FILE* pfile=NULL; char buf[0x10 ...

  5. 嵌入式arm linux环境中gdb+gdbserver调试

    一.前言嵌入式Linux系统中,应用开发过程中,很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序.采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采 ...

  6. android中完全退出当前应用程序的四种方法

    Android程序有很多Activity,比如说主窗口A,调用了子窗口B,如果在B中直接finish(), 接下里显示的是A.在B中如何关闭整个Android应用程序呢?本人总结了几种比较简单的实现方 ...

  7. VS中发布并调试IIS程序(非附加进程!!!)

    筒子们,你们不觉得发布到IIS再附加进程太烦了么???看了看网上全是这种方法,这不科学!VS已经提供了更好的方式了,少年们! 流程 1.打开你的IIS,创建一个站点示例中,我创建了一个端口号为5002 ...

  8. Android中为你的应用程序添加桌面快捷方式

    public void ShortCut(View view){ createDeskShortCut(this,getString(R.string.short_cut),R.drawable.up ...

  9. VS中发布并调试IIS程序

    1.创建本地IIS站点 2.修改配置 .net framework 右击项目属性,服务器修改为本地IIS,并且项目URL修改为相对应的站点即可 .net core 右键属性,进入调试栏新建一个配置 选 ...

随机推荐

  1. php windows rename 中文出错

    php windows rename 中文出错 rename()函数可以重命名文件.目录等,但是要注意目的地和起始地址的编码. 比如:我的PHP文件编码是UTF-8,但是在WINDOW系统中中文默认编 ...

  2. 报错!!!!!!!!!!!org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springSessionRepositoryFilter' is defined

    报错!!!!!!!!!!! 因用maven项目不是很熟练,经常在Maven转Web项目(为什么要转web项目?因为要在tomcat中跑起来.maven项目好像是可以直接部署到tomcat的,或集成to ...

  3. bzoj3918 [Baltic2014]Postman

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3918 [题解] 每日至少更一题啊qwq凑任务(迷 明显猜个结论:随便搜环就行了 然后搜环姿势 ...

  4. usaco 月赛 2005 january sumset

    2013-09-18 08:23 打表找规律 w[i]:=w[i-1];  奇 w[i]:=w[i-1]+w[i div 2];     偶 //By BLADEVIL var w :..] of l ...

  5. dd命令测试硬盘I/O速度

    [root@bogon ~]# dd if=/dev/zero of=/home/tom.a.txt bs=200MB count=1记录了1+0 的读入记录了1+0 的写出200000000字节(2 ...

  6. ubuntu下wireshark+scapy+tcpreply

    安装wireshark命令: sudo apt-get install wireshark 运行打开wireshark命令: sudo wireshark(一定要以超级权限打开) 正确打开的窗口应该默 ...

  7. 出现“error c4430缺少类型说明符-假定为int。注意C++不支持默认int

    出现这种错误的原因,是因为函数没有写返回值.是在VC6.0的工程转为高版本(VS2010)的时候经常出现的; #include <stdio.h> main() { printf(&quo ...

  8. discuz自定义生成单页面

    在pc端,若要生成一个单页面,有一个比较方便的方法是生成新的专题页,然后diy其中的内容. 不过这种做法有两个缺点 1 url太过冗赘 2 只有一个插入url代码功能,没有文本编辑功能 而且文本框小的 ...

  9. lucene5 实时搜索

    openIfChanged public static DirectoryReader openIfChanged(DirectoryReader oldReader) throws IOExcept ...

  10. solr 启动过程分析

    http://www.cnblogs.com/likehua/p/4353608.html#top