`

嵌入式中使用gdb

 
阅读更多
编译
For gdb:
/path/to/gdb-src/configure --target=arm-linux-gnueabi
make


For GDBserver
引用
/path/to/gdb-src/gdb/gdbserver/configure --host=arm-linux-gnueabi
../.././../gnulib/import/mbrtowc.c:125: error: 'MB_CUR_MAX' undeclared (first use in this function)
vim ../gnulib/import/mbrtowc.c
#define MB_CUR_MAX 1
make


使用
on embeded system:
引用
gdbserver target_ip:target_port prog_dbg


on pc:
引用
cd gdb
./gdb
>>target remote target_ip:target_port

这时会出现错误:
错误类型:
Python Exception <type 'exceptions.NameError'> Installation error: gdb.execute_unwinders function is missing:
这个错误表明需要安装gdb
所以make install


调试
(1)改变gdb信号处理的设置
比如,以下设置会告诉gdb在接收到SIGINT时不要停止、打印出来、传递给调试目标程序
引用
=====================================
(gdb) handle SIGINT nostop print pass
SIGINT is used by the debugger.
Are you sure you want to change it? (y or n) y

Signal Stop Print Pass to program Description
SIGINT No Yes Yes Interrupt
(gdb)
=====================================



(2)使用gdb命令直接向调试的应用程序发送信号
首先在你希望发送信号的语句处设置断点,然后运行程序,当停止到断点所在位置后,用gdb的signal命令发送信号给调试目标程序
引用
====================================
(gdb) signal SIGINT
Continuing with signal SIGINT.

Breakpoint 1, handler (signal=2) at main.cpp:15
15 printf("Signal handler.../n";
====================================


切换线程
引用
info threads 显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。 前面有*的是当前调试的线程。

thread ID 切换当前调试的线程为指定ID的线程。

break thread_test.c:123 thread all 在所有线程中相应的行上设置断点

thread apply ID1 ID2 command 让一个或者多个线程执行GDB命令command。

thread apply all command 让所有被调试线程执行GDB命令command


http://blog.csdn.net/expleeve/article/details/6258175
https://sourceware.org/gdb/wiki/BuildingCrossGDBandGDBserver
http://www.cnx-software.com/2012/01/31/debugging-embedded-linux-with-gdbserver-and-insight-gdb-gui/
http://stackoverflow.com/questions/33657527/a-python-exception-error-in-gdb-7-10
https://lists.gnu.org/archive/html/bug-gnulib/2009-05/msg00268.html
http://www.cnblogs.com/xuxm2007/archive/2011/04/01/2002162.html
分享到:
评论

相关推荐

    嵌入式linux下移植gdb和gdbserver调试工具源码

    在嵌入式Linux系统开发中,调试是必不可少的环节,而GDB(GNU Debugger)和GDBserver则是其中的关键工具。GDB是一个强大的源代码级调试器,支持多种编程语言,如C、C++、Fortran等。GDBserver则是一个轻量级的远程...

    使用gdb调试嵌入式应用程序

    使用gdb调试嵌入式应用程序 gdb(GNU Debugger)是一款功能强大的源代码调试工具,广泛应用于各种操作系统平台,包括嵌入式系统。使用gdb调试嵌入式应用程序可以帮助开发者快速定位和解决软件 bug,提高开发效率和...

    嵌入式Linux GDB调试技术

    嵌入式Linux GDB调试技术是指在嵌入式系统中使用GDB调试程序的一种技术。GDB(GNU Debugger)是一种功能强大且灵活的调试器,可以在各种平台上使用。嵌入式Linux GDB调试技术的主要目的是掌握Linux GDB调试方法和...

    嵌入式gdb调试core

    ### 嵌入式GDB调试Core文件详解 在嵌入式系统开发过程中,经常会遇到程序出现异常的情况。为了能够定位这些异常发生的原因并进行修复,开发者通常会借助于调试工具来帮助分析问题所在。其中,GDB(GNU调试器)作为...

    嵌入式Linux平台gdb debug文档

    这篇文档将深入介绍如何在嵌入式Linux平台上使用GDB进行调试。 首先,确保你已经安装了GDB。如果没有,可以通过包管理器(如`apt-get`或`yum`)进行安装。GDB通常与交叉编译工具链一起提供,因此,对于嵌入式系统,...

    嵌入式交叉编译 移植gdb.tar.gz

    标题中的"嵌入式交叉编译 移植gdb.tar.gz"指的是一项任务,即在宿主机(通常是x86架构的个人电脑)上使用特定的交叉编译工具链,如`arm-none-linux-gnueabi 4.5.2`,来编译GDB软件,以便在ARM架构的目标设备上运行。...

    嵌入式gdb调试环境建立

    《嵌入式GDB调试环境建立详解》 嵌入式开发中,调试是必不可少的一环,而GDB作为一款强大的源代码级调试器,对于理解程序的运行逻辑、定位问题至关重要。本文将详细介绍如何在Linux环境下,为嵌入式设备建立GDB调试...

    gdb完全手册.pdf.zip_GDB pdf_GDB中文手册_gdb_linux_linux gdb pdf

    "GDB完全手册.pdf.zip"包含了对GDB全面的介绍和指南,是学习和使用GDB的重要参考资料。 GDB中文手册特别适合中文用户,提供了详细的操作步骤和实例解析,帮助开发者理解GDB的各个功能。手册通常会包含以下内容: 1...

    厦门万册 嵌入式培训 GDB调试文档

    ### 厦门万册嵌入式培训GDB调试文档知识点总结 #### 一、GDB概述 **GDB**(GNU Debugger)是一款强大的开源调试工具,主要用于在UNIX及其类系统(如Linux)环境中进行程序调试。与常见的图形界面调试器(如Visual ...

    STM32 GDB调试手册

    嵌入式系统的调试方法包括使用 GDB、使用 printf 语句、使用逻辑分析仪等。 2. STM32 微控制器的特点是什么?STM32 微控制器的特点包括高性能、低功耗、丰富的外设接口等。 3. ARM 架构的特点是什么?ARM 架构的特点...

    嵌入式开发习惯和gdb调试步骤

    1. 首先搭建嵌入式gdb环境,网络上有很多介绍,这里不再描述,主要介绍嵌入式gdb使用方法。 2. 目标板和服务器(你的pc机ubuntu)需在同一局域网内,可以通过wifi相连,或者网口相连。 3. 目标板有gdbserver,在...

    构建嵌入式GDB调试环境.docx

    在本文中,我们将深入探讨如何构建一个嵌入式的GDB调试环境,特别是在ZYNQ 7020平台上。ZYNQ 7020是一款由Xilinx公司设计的System-on-Chip (SoC),集成了ARM Cortex-A9处理器,广泛应用于嵌入式系统和实时操作系统。...

    使用gdb调试嵌入式系统

    1. 概论 我们将学习使用gdb来调试通过一个通过串行线同PC相连的嵌入式系统. Gdb可以调试各种程序,包括C、C++、JAVA、PASCAL、FORAN和一些其它的语言。包括GNU所支持的所有微处理器的汇编语言。 在gdb的所有...

    VisualGDB5.2R8破解补丁资源分0

    VisualGDB的最新补丁(至2017年4月)

    使用GDB开发调试大全

    在GDB中,你可以使用 `break` 或 `b` 命令,后跟行号或函数名来设置断点。 3. **运行与单步执行**:使用 `run` 或 `r` 命令开始执行程序,遇到断点时会自动暂停。要逐行执行代码,可以使用 `step` 或 `s` (进入...

    Gdb+gdbserver嵌入式目标板的调试梁玉锋.pdf

    本文将详细阐述如何使用GDB(GNU Debugger)和gdbserver在嵌入式目标板上进行远程调试。GDB是一个强大的源码级调试工具,而gdbserver是GDB的一个轻量级版本,专门用于远程调试。 远程调试环境通常由两部分组成:宿...

    GDB官网用户手册(gdb.pdf)

    用户可以通过在命令行中输入「gdb」命令来启动 GDB,或者通过在 IDE 中配置 GDB 来启动调试会话。 知识点 3: GDB 的调试技术 GDB 提供了多种调试技术,包括断点、单步执行、变量检查、表达式计算等。用户可以通过...

    GDB使用手册(中文版)

    此外,远程调试也是GDB的一大亮点,手册将指导用户如何在远程服务器上进行程序调试,这对于分布式系统和嵌入式开发非常实用。 错误处理和调试信息解析也是GDB的重要功能,手册会详细介绍如何利用GDB分析和理解核心...

Global site tag (gtag.js) - Google Analytics