精华内容
下载资源
问答
  • 搭建嵌入式linux应用程序调试环境

    千次阅读 2015-08-12 21:08:00
    使用gdb搭建嵌入式Linux调试环境,使用网络与开发板通信,调试应用程序 一、下载gdb源码 下载地址:ftp://ftp.gnu.org/gnu/gdb/ 我使用的版本为:gdb-7.7.1.tar.gz 二、编译gdb client (1)tar xvzf gdb-7.7.1.tar...

    使用gdb搭建嵌入式Linux调试环境,使用网络与开发板通信,调试应用程序

    一、下载gdb源码

    下载地址:ftp://ftp.gnu.org/gnu/gdb/

    我使用的版本为:gdb-7.7.1.tar.gz

    二、编译gdb client

    (1)tar xvzf gdb-7.7.1.tar.gz

    (2)./configure --target=arm-linux --prefix=/home/shirf/my_explore/linux_explore/debug_type/gdb_file/gdb_client

    (其中编译、安装后的可执行文件放到/home/shirf/my_explore/linux_explore/debug_type/gdb_file/gdb_client,这个目录可自定义)

    (3)make

    (4)make install

    (5)在目录/home/shirf/my_explore/linux_explore/debug_type/gdb_file/gdb_client/bin/下arm-linux-gdb就为在pc端运行的调试工具,可以通过

    export PATH=$PATH:/home/shirf/my_explore/linux_explore/debug_type/gdb_file/gdb_client/bin/讲该目录添加到环境变量中。

    三、编译gdb servercd 

    (1)还是进入解压完的gdb-7.7.1下的gdb/gdbserver/

    (3) ./configure --target=arm-linux --host=arm-linux

    (4)vi config.h

             注释:#define HAVA_SYS_REG_H 变为//#define HAVA_SYS_REG_H

    (5)make CC=arm-none-linux-gnueabi-gcc(其中arm-none-linux-gnueabi-gcc为我的编译器)

    (6)gdbserver即为运行在板子上的gdb

    四、实战

    (1)源码

    #include <stdio.h>

    int

    func(int n){

         int   sum=0, i;

         for (i=0; i<n; i++){

             sum += i;
         }

         return sum;
     }

     int

     main(void)
     {
        int   i;
        long result = 0;

        for (i=0; i<=100; i++){
            result += i;
        }

        printf("result[1-100] = %d /n", result);
        printf("resutl[1-225] = %d /n", func(255));

        return 0;
    }

    (2)编译源码

    vi arm_gdb_test.c 并且复制源码

    arm-none-linux-gnueabi-gcc -g arm_gdb_test.c -o arm_gdb_test


    (3)复制arm_gdb_test和gdbserver

    我是nfs文件系统与板子建立共享目录方式,进行文件复制


    (4)开发板运行应用程序

    ./gdbserver 192.168.0.103:12340 arm_gdb_test

    192.168.0.103为我PC机地址,12340为临时gdb使用的端口,可以自己指定

    其实可以将192.168.0.103:12340 变为*:12340,通过netstat -an 发现开发板建立一个TCP监听端口为12340的套接字,

    这个套接字可以接收任何地址的请求。

    (5)在PC端调试程序

    将/home/shirf/my_explore/e9_platform/arm_gdb/gdb_bin/bin/arm-linux-gdb复制到PC端生成的可执行文件处,用于调试用

    ./arm-linux-gdb  arm_gdb_test

    target remote 192.168.0.200:12340(用于链接开发板)

    此时就可以按照gdb方式调试应用程序了。


    展开全文
  • 建立ARM+Linux应用程序调试环境

    千次阅读 2009-02-22 21:23:00
    建立ARM+Linux应用程序调试环境 Gdb+gdbserver+insight环境的搭建1. 下载gdb源代码 http://ftp.gnu.org/gnu/gdb/ 2. 配置安装gdb+gdbser$ tar jxvf gdb-6.6.tar.bz2$ cd x/gdb$ ./configure --target=arm-linux

     

    建立ARM+Linux应用程序调试环境

     

    Gdb+gdbserver+insight环境的搭建

    1.    下载gdb源代码    http://ftp.gnu.org/gnu/gdb/

     

    2.    配置安装gdb+gdbser

    $ tar jxvf gdb-6.6.tar.bz2

    $ cd x/gdb

    $ ./configure --target=arm-linux --prefix=/usr/local/arm-gdb –v

          --prefix用于指定安装路径

          --target=arm-linux 用于制定目标环境的编译

    编译, $ make

    安装, $ sudo make install

    之后在x/bin文件夹下生成arm-linx-gdb可执行文件.

    $ cd gdbserver

    配置文件:

    $ ./configure --target=arm-linux --host=arm-linux
    --target=arm-linux表示目标平台,--host表示主机端运行的是arm-linux-gdb,不 需要配置—prefix,因为gdbserver不在主机端安装运行)

    $ make CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc
    (
    这一步要指定你自己的arm-linux-gcc的绝对位置,相对的通常不行,提示make: arm-linux-gcc: Command not found,如果用的相对路径,即直接赋值arm-linux-gcc,可采取make时传递参数,也可以直接修改gdbserver目录下的Makefile文件中的环境变量CC)

    之后在gdbserver目录下生成gdbserver可执行文件.

    可将它通过nfs拷贝到目标板上运行.

    如:mount –t nfs host:/friendly-arm/root /mnt –o ro,nolock

    这里如果没有加上选项 –o ro,nolock 无法正常mount.

    @在目标板上运行

          (1)将要调试的文件和gdbserver放在同一个文件夹下

                vivi> ./gdbserver  host:port  待调试文件

    2)在主机段执行 arm-linux-gdb “待调试文件

        gdbtarget remote client:port     连接客户机

       注意:(1)在目标机上通过gdbserver调试的程序在gdbserver运行的时候已经运行了,并且其中不包含调试的符号信息,所以要想加入符号信息只能通过host运行的gdb加入含有调试信息的可执行文件。

               (2)刚开始的时候将./gdbserver下载到目标机后不能运行,其主要原因就是所制作的网络根文件系统缺少libthread_db.so.1库文件。但是发现lib中并没有该文件,只有一个链接文件,通过file命令查看:

              [root@localhost lib]# file libthread_db.so.1

              Libthread_db.so.1: symbolic link to libthread_db-1.0.so

              发现该链接文件链接到libthread_db-1.0.so该库文件,于是将文件libthread_db-1.0.so拷贝到根文件系统,然后改名为Libthread_db.so.1,之后gdbserver能正常运行了.

     

    3.       安装gdb图形调试界面insight  gtk 软件包)

    下载地址:http://sourceware.org/insight/       版本为:insight-6.6.tar.bz2

    $ tar  –jxvf  insight-6.6.tar.bz2

    $ cd insight-6.6

    配置文件:

    ./configure --target=arm-linux --enable-sim --prefix=/usr/local/arm/insight

    配置选项的解释同上.

      编译, $ make

      安装, $ sudo  make  install

    注意:在第一次编译的时候老是出现问题,最后发现自己在装RedHat9.0的时候为了节省磁盘空间没有安装 gtk软件包,所以编译的时候会出错。但是在装了之后,再次编译insight-6.8.tar.bz2版本,出现了X参数未初始化的错误。然后重新换成insight-6.6.tar.bz2版本,编译成功,安装.

    关于gdb远程调试参见:http://codex.wordpress.org.cn/GDB_Manual_17_1

     

    剩下需要解决,就是busyboxminicom下如何终止程序的运行。

    展开全文
  • linux环境下PDA模拟界面程序调试 PDA linux 烧写 miniGUI 交叉编译
  • GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的...
  • linux应用程序调试gdb+gdbserver

    千次阅读 2016-07-08 11:39:28
    在pc上xxxx/xxx-linux-gdb /bin/xxx,进入gdb后target remote ip:port开始进行gdb调试如果发现出现no debugging symbols found的时候,需要在编译的地方加-g选项,并且make menuconfig中按照如下设置, [*] Enable ...

    rlx平台

    在目标板子上gdbserver ip:port /bin/xxx
    在pc上xxxx/xxx-linux-gdb /bin/xxx,进入gdb后target remote ip:port开始进行gdb调试

    如果发现出现no debugging symbols found的时候,需要在编译的地方加-g选项,并且make menuconfig中按照如下设置,
    [*] Enable debug symbols (-g)
    [*] Disable symbol stripping support


    arm平台

    同样,在arm平台上也需要交叉编译过的gdb和gdbserver
    下载最新版本的gdb-6.8.tar.gz,可以到ftp://ftp.gnu.org/gnu/gdb下载.
    准备好自己的工作目录,如下示

    /home/user/gdb
                |--gdb-6.8
                |--obj-gdb
                        |--build
                |--obj-gdbserver
                        |--build
                |--bin

    脚本obj-gdb/build内容如下:

    #!/bin/sh
    ../gdb-6.8/configure --target=arm-linux --enable-shared --prefix=/usr/src/arm/gdb/build-gdb --without-x --disable-gdbtk --disable-tui --without-included-regex --without-included-gettext
    
    make
    
    echo "done"

    脚本obj-gdbserver/build内容如下:

    #!/bin/sh
    CC=/opt/toolchain/arm-linux/bin/arm-linux-gcc
    ../gdb-6.8/gdb/gdbserver/configure --host=arm-linux --without-included-regex --without-included-gettext
    
    echo "done"

    开始编译:
    (1) cd obj-gdb
    ./build
    (2) cd obj-gdbserver
    ./build
    这时会生成Makefile,修改Makefile如下
    LDFLAGS= -static
    然后make
    (3) cd bin
    cp ../obj-gdb/gdb/gdb .
    cp ../obj-gdbserver/gdbserver .
    arm-linux-strip gdbserver
    (4) 好了bin目录下就是最终编译出来的gdb+gdbserver了

    gdbserver使用:
    (1) 目标机中
    执行命令gdbserver 10.0.12.144:1234 test
    注意test在编译的时候是要加-g选项的
    (2) 宿主机中
    gdb test
    再输入命令target remote 10.0.12.143:1234
    接下来就可以gdb的调试了
    (3) 说明
    目标机IP:10.0.12.143
    宿主机IP: 10.0.12.144
    端口是随意指定的,只要两端保持一致就行了
    test程序两端也必须相同(stavy)


    参考文章

    1. 嵌入式arm linux环境中gdb+gdbserver调试
    展开全文
  • Linux bash程序调试讲解

    千次阅读 2013-11-29 08:34:35
    Linux bash程序调试讲解  Linux bash程序在程序员的使用中十分重要,尤其是和shell程序的使用中Linux bash程序调试格外重要。在进行调试的过程中有许多小技术点需要我们注意。下面的门就来详细的学习下。 ...

    Linux bash程序的调试讲解

     Linux bash程序在程序员的使用中十分重要,尤其是和shell程序的使用中Linux bash程序的调试格外重要。在进行调试的过程中有许多小技术点需要我们注意。下面的门就来详细的学习下。

    Linux bash程序的调试

    在编程过程中难免会出错,有的时候,调试程序比编写程序花费的时间还要多,shell程序同样如此。

    shell程序的调试主要是利用bash命令解释程序的选择项。调用bash的形式是:

    bash -选择项 shell程序文件名

    几个常用的选择项是:

    -e:如果一个命令失败就立即退出

    -n:读入命令但是不执行它们

    -u:置换时把未设置的变量看作出错

    -v:当读入shell输入行时把它们显示出来

    -x:执行命令时把命令和它们的参数显示出来

    上面的所有选项也可以在shell程序内部用“set -选择项”的形式引用,而“set +选择项”则将禁止该选择项起作用。如果只想对程序的某一部分使用某些选择项时,则可以将该部分用上面两个语句包围起来。

    1.未置变量退出和立即退出

    未置变量退出特性允许用户对所有变量进行检查,如果引用了一个未赋值的变量就终止shell程序的执行。shell通常允许未置变量的使用,在这种情况下,变量的值为空。如果设置了未置变量退出选择项,则一旦使用了未置变量就显示错误信息,并终止程序的运行。未置变量退出选择项为“-u”。

    当shell运行时,若遇到不存在或不可执行的命令、重定向失败或命令非正常结束等情况时,如果未经重新定向,该出错信息会打印在终端屏幕上,而shell程序仍将继续执行。要想在错误发生时迫使shell程序立即结束,可以使用“-e”选项将shell程序的执行立即终止。

    2.shell程序的跟踪

    调试shell程序的主要方法是利用shell命令解释程序的“-v”或“-x”选项来跟踪程序的执行。“-v”选择项使shell在执行程序的过程中,把它读入的每一个命令行都显示出来,而“-x”选择项使shell在执行程序的过程中把它执行的每一个命令在行首用一个“+”加上命令名显示出来。并把每一个变量和该变量所取的值也显示出来,因此,它们的主要区别在于:在执行命令行之前无“-v”则打印出命令行的原始内容,而有“-v”则打印出经过替换后的命令行的内容。

    除了使用shell的“-v”和“-x”选择项以外,还可以在shell程序内部采取一些辅助调试的措施。例如,可以在shell程序的一些关键地方使用echo命令把必要的信息显示出来,它的作用相当于C语言中的printf语句,这样就可以知道程序运行到什么地方及程序目前的状态。

    Linux bash程序的内部命令

    Linux bash程序解释程序包含了一些内部命令。内部命令在目录列表时是看不见的,它们由shell本身提供。常用的内部命令有:echo、eval、exec、export、readonly、read、shift、wait和点(.)。下面简单介绍其命令格式和功能。

    1.echo

    命令格式:echo arg

    功能:在屏幕上打印出由arg指定的字符串。

    2.eval

    命令格式:eval args

    功能:当shell程序执行到eval语句时,shell读入参数args,并将它们组合成一个新的命令,然后执行。

    3.exec

    命令格式:exec 命令 命令参数

    功能:当shell执行到exec语句时,不会去创建新的子进程,而是转去执行指定的命令,当指定的命令执行完时,该进程,也就是最初的shell就终止了,所以shell程序中exec后面的语句将不再被执行。

    4.export

    命令格式:export 变量名 或:export 变量名=变量值

    功能:shell可以用export把它的变量向下带入子shell从而让子进程继承父进程中的环境变量。但子shell不能用export把它的变量向上带入父shell。

    注意:不带任何变量名的export语句将显示出当前所有的export变量。

    5.readonly

    命令格式:readonly 变量名

    功能:将一个用户定义的shell变量标识为不可变的。不带任何参数的readonly命令将显示出所有只读的shell变量。

    6.read

    命令格式:

    read变量名表

    功能:从标准输入设备读入一行,分解成若干字,赋值给shell程序内部定义的变量。

    7.shift语句

    功能:shift语句按如下方式重新命名所有的位置参数变量:成为,成为……在程序中每使用一次shift语句,都使所有的位置参数依次向左移动一个位置,并使位置参数“$#”减一,直到减到0。

    8.wait

    功能:是shell等待在后台启动的所有子进程结束。Wait的返回值总是真。

    9.exit

    功能:退出shell程序。在exit之后可有选择地指定一个数字作为返回状态。

    10.“.”(点)

    命令格式:. Shell程序文件名

    功能:使shell读入指定的shell程序文件并依次执行文件中的所有语句。

    展开全文
  • Linux,一切皆文件,那么在Android系统本身,也是Linux+java罢了,也是在Linux的运行环境下。 通常,我们在调试程序的都会使用printf。 在Android中,我们会去使用logcat,现在,给大家介绍一种常用的调试方法,...
  • Linux环境调试静态库

    千次阅读 2010-04-15 16:11:00
    这两天同事在Octeon开发板上调试Linux程序,遇到了一个问题:无法让gdb单步跟踪进入静态库(libcrypto.a和libcvmx.a)对应的源文件。 我自己在PC上写了一个小程序进行验证,发现果然是这样。如果把全部.o文件(用-...
  • Linux gcc和gdb程序调试用法

    千次阅读 2013-03-09 15:38:17
    gcc和gdb程序调试用法 gcc一般调试格式: gcc -Wall -o test test.c // -wall 显示程序错误详细信息  gcc -v // 显示gcc的版本 gcc -o{1,2,3} test test.c // 1,2,3三个级别的优化,优化级别越高编译的时间越长 ...
  • 本篇文章主要介绍了详解Win10 Bash/WSL调试Linux环境下的.NET Core应用程序 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • linux vscode 构建调试环境

    千次阅读 2019-06-12 09:42:11
    linux下的开发环境,包括调试什么的,学习成本不低呀,无法像我们在windows下面那样,有visual studio这种核武器! 但是幸运的是,我们有vs code. 下载地址: https://code.visualstudio.com/ 接下来给大家讲解一下,...
  • Linux环境下使用GDB调试C程序

    千次阅读 2016-03-20 17:03:11
    gdb是linux环境下一个非常著名的C语言调试工具,而且也非常的好用,对于解决C语言的各种bug非常拿手,对于c语言下常见的内存问题,可以说能非常快速的定位并解决问题。这篇博客首先通过介绍gdb的基本使用,后面补充...
  • linux下c程序调试

    千次阅读 2013-12-29 22:29:20
    使用GCC编译器对c程序进行编译。 先用vim写一个简单的c程序 命名为a.c(此次的后缀名如果不是.c的话还需要另一个处理参数,后边会说) 打开终端进入a.c所在目录 1. 首先将代码编译成可执行的文件: gcc a.c 2. ...
  • 1 Codeblocks配置交叉编译环境 2 arm-linux-gdb和gdbserver安装方法 3 配置nfs共享文件目录 4 修改Codeblock工程的调试属性 5 调试示例
  • VS2017调试linux应用程序,环境构建步骤,英文资料使用说明
  • 下面开始正式配置调试环境 首先在电脑上你习惯的位置新建一个文件夹,用于存放编写的代码,接下来配置好的调试环境,仅会对存放在这一个文件夹以及文件夹的子目录里程序生效! 新建好文件夹后,在vscode界面,点击:...
  • Linux下C++的编程——GDB进行程序调试

    万次阅读 2015-12-12 16:50:54
    GDB简介我们在Linux下C++的编程——开偏介绍一文中已经简单介绍了GDB的功能,是类Unix系统的主要调试工具,可进行断点调试,跟踪程序,动态改变执行环境等功能。从一个程序开始调试下面我们就从一个程序开始讲解一下...
  • linux环境下使用gdb调试段错误

    千次阅读 2017-08-27 13:35:06
    linux环境下使用gdb调试段错误
  • Linux环境开发STM32,从环境到调试

    万次阅读 2015-02-14 11:21:23
    最近因为某些原因,工作环境从windows向linux迁移了。原本在windows下开发STM32,现在要改用在linux上开发。  首先简单地描述一下软硬件开发环境。 宿主机:  操作系统:CentOS7 x86_64 ( grome桌面版 ) ...
  • Linux下C语言程序调试

    千次阅读 2018-10-04 16:07:11
    Linux调试C语言程序1.编译时添加调试信息2.使用调试命令进行调试gdb调试器语法gdb模式下的命令[^1]**readelf命令**ELF文件类型ELF文件作用ELF文件总体组成选项 1.编译时添加调试信息 使用gcc -g -o [生成...
  • linux环境调试一些嵌入式设备时出现Aborted、segmentation fault、卡死的问题,这些问题可能的原因为: 1、Aborted的问题,例如: # ./logUtils0322 [UnitTest.cpp]:will init log [cfgfile.cpp]: logfile ...
  • linux系统下调试python程序

    千次阅读 2018-05-17 22:16:48
    在没有IDE进行开发的情况下,可以使用pdb命令进行程序调试。对test.py程序进行调试:python -m pdb test.py(Pdb) 会自动停在第一行,等待调试,这时你可以看看 帮助(Pdb) h说明下这几个关键 命令&gt;断点设置(Pdb...
  • 安装交叉编译器(arm-linux-gcc)以及集成开发环境(eclipse) 1.安装arm-linux-gcc,不管你是从网上下载的,还是开发板光盘里面的,都可以,版本也没什么限制,我的是arm-linux-gcc-4.3.2。  进入arm-linux-...
  • 2、程序卡死的问题,就是程序的进程还在,但是却卡在那里什么都不做,该问题可能也是内存访问越界造成的;另外还可能是多线程中混合使用C和C++的函数 造成,例如:某些嵌入式linux平台对C++支持的不好,这时候如果在...
  • 下面只列举比较基础的命令,且一般是集成在linux环境中而不需再次安装的命令。更多更详细的命令可以参考 https://github.com/brendangregg/perf-tools  A、CPU进程相关 常用工具列举下:uptime、ps、top、mpstat...
  • Linux环境下的GDB调试方法

    万次阅读 多人点赞 2018-08-31 15:16:06
    1、GDB简介   GDB(GNU Debugger)是GCC的调试工具。其功能强大,现描述如下:      GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的...4.动态的改变你程序的执行环境。...
  • Linux下GDB调试GCC

    2012-07-24 20:27:59
    Linux环境下用GDB调试GCC程序
  • 参考:https://blog.csdn.net/zhaihaifei/article/details/53691873目标:在windows下使用pycharm写代码,运行时在远程linux服务器环境下运行点击设置的按钮,选择show all点击+号选中SSH Interpreter,填写服务器...
  • linux使用gdb调试程序完全教程

    万次阅读 2016-09-06 14:29:50
    本文将主要介绍linux下的强大调试工具是怎么完成这些工作的。 之所以要调试程序,是因为程序的运行结果和预期结果不一致,或者程序出现运行时错误。  调试的基本思想是:  分析现象 -> 假设错误原因 -> 产生新的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 168,916
精华内容 67,566
关键字:

linux环境程序调试

linux 订阅