zoukankan      html  css  js  c++  java
  • Gdb等几则笔记

    Gdb等几则笔记

    转载时请注明出处和作者联系方式

    作者联系方式:李先静 <xianjimli at hotmail dot com>

    一、gdb几种常见使用方式及编译方法:

    1.在本机调试本机的程序。

    在正常情况下,我们调试程序都是用的这种方法。

    这时编译gdb和编译普通应用一样:

    mkdir host-i386

    cd host-i386

    ../configure –prefix=/usr/local

    make;make install


    2.ARM板上直接调试ARM程序。

    这种情况比较少见,但确实可行,不过介于一般ARM CPU的运算能力,只能调试小程序,因为调试大程序实在慢得让人难以忍受。调试时,在主机端把程序编译好后,通过NFS映射到ARM板上。保持源程序在ARM上和主机上的目录一致,这样在gdb中就不用>设置源代码的路径了。

    这时编译gdb和交叉编译普通程序一样,指定—host=arm-linux即可。

    mkdir arm

    cd arm

    ../configure --prefix=/usr/local/arm-rootfs/usr/local –host=arm-linux –build=i386-linux –disable-werror --without-x --disable-gdbtk --disable-tui

    make;make install

    3.ARM板运行gdbserver,在主机上运行gdb

    由于gdbserver占用资源很少,适合在目标板上运行,所以这种情况最为典型。它的使用方法比较简单,但是调试共享库有点麻烦,我在<嵌入式linux调试:用gdbserver调试共享库>中介绍过一种方法,不知道有没有更好办法。

    编译主机端的gdb:要注意的是,这和第一种中的编译方法不一样,因为此时gdb虽然在主机上运行,它解释的是ARM指令,而不是主机的i386指令,所以要指定–target=arm-linux。编译方法如下:

    mkdir arm-target

    cd arm-target

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

    make;make install

    编译ARM板的gdbserver:实际上就是交叉编译gdbserver,与第二种方法类似,这里不再多说。

    二、版本不匹配引用的问题。

    最近测试浏览器(GTK+ minimo),发现 minimo浏览部分网页时,会在pango_default_breakassert掉。今天用gdb跟了一下,>原来是因为pangoglib不匹配引起的。前段时间,我们升级了glib,经过一段时间的测试没有发现什么问题。今天发现pango>glib一些枚举定义不一致,结果引发了assert,升级了pango之后,浏览器非常稳定了。除了多测试,好像对这种错误无能为力,不知大家有什么好方法没有?

    ~~end~~

     
  • 相关阅读:
    dp 简单例题poj 1260 Pearls
    多校赛 Barareh on Fire
    中国剩余定理的简单应用 poj 1006 Biorhythms
    CF 5A. Chat Server's Outgoing Traffic
    springmvc使用aop心得
    Firefox添加插件支持修改Headers
    提高网站打开速度的18点要素
    用maven打包项目成war文件
    springmvc使用@ResponseBody返回json乱码解决方法
    用JS实现删除买家信息(阿里巴巴模拟笔试)
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167696.html
Copyright © 2011-2022 走看看