gdb加载动态库成功,但是不能显示动态库中的源码(gdb+gdbserver)
老大我才刚刚学linux昨天直接就安装完成咯,你仔细看看…
(1) download gdb source
ftp://ftp.gnu.org/gnu/gdb/
(2) compile
(2.1) compile gdb
./configure --target=arm-linux -v
make
在gcc4.0中,强制转换的值不能做左值.
如果您和我一样用的是gcc 4.0, 那只好把这几个地方修改了,也不知道是不是因为这个原因,有了本文最后面的那个问题。
(2.2) compile gdbserver(这个是要运行在arm上的,所以要进行交叉编译)
cd gdb/gdbserver
./configure --target=arm-linux --host=arm-linux
把config.h中的以下这一行用//注释掉
// #define HAVE_SYS_REG_H 1
make CC=arm-linux-gcc
libthread_db.so.1找不到的问题也比较麻烦,可以再把下面这一行注释掉
/* Define if you have the header file. */
//#define HAVE_THREAD_DB_H 1
(3)
run gdbsever on the ARM board
# gdbserver 1Array2.168.0.2:1254 hello
run gdb on the pc
[root@localhost helloWorld]# ./gdb
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for
GDB.&嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用arm-linux-gdb,Target
Board端使用gdbserver。调试时,应用程序在嵌入式目标系统上运行,而gdb调试在Host端。
一、编译安装gdb+gdbserver
首先下载gdb源码,我下载的是gdb-6.6.tar.gz。
$tar xvzf gdb-6.6.tar.gz
$mkdir mygdb
$cd mygdb
必须要在你想要安装的目录下执行下边的命令。
$../gdb-6.6/configure --target=arm-linux \ --prefix=/home/a/mygdb
参数说明:target是你的目标板,我的是arm-linux,prefix是你要安装的目标文件夹。
$make
$make install
然后建立gdbserver。
$mkdir mygdbserver
$cd mygdbserver
$chmod +x ../gdb-6.6/gdb/gdbserver/configure
$CC=arm-linux-gcc ../gdb-6.6/gdb/gdbserver/configure \
--host=arm-linux --prefix=/home/a/mygdbserver
$make
$make install
$arm-linux-strip gdbserver
去除调试信息。不去好像不行,我的就不行,去了就ok了。
复制到你的开发板上就可以了。
二、调试步骤
1、交叉编译,带参数-g加入调试信息。
假设要调试的程序为test.c。
#arm-linux-gcc -g test.c -o test
2、在Target Board开启gdbserver
#gdbserver :2345 test
gdbserver开始监听2345端口(你也可以设其他的值),然后启动test,你会看到“Process test created:pid=88”
3、回到Host端
#arm-linux-gdb test
最后一行显示:This GDB was configured as “--host=i686-pc-linux-gnu,--target=arm-linux”...
说明此gdb在X86的Host上运行,但是调试目标是ARM代码。
(gdb)target remote :2345
注意:你的端口号必须与gdbserver开启的端口号一致,这样才能进行通信。
建立链接后,就可以进行调试了。调试在Host端,跟gdb调试方法相同。注意的是要用“c”来执行命令,不能用“r”。因为程序已经在Target Board上面由gdbserver启动了。结果输出是在Target Board端,用超级终端查看。
如果仅从断点上看,应该就是CApartment.cpp:55
但是,如果你的程序编译的时候,不是-O0,那个可能回不到源码,只能看汇编。
1、有时候(很少)就是编译器的错误。
2、还有可能就是你调试的程序和你的源码不匹配
3、你的程序已经崩溃了,破坏了堆栈或者GDB需要的数据。
4、这个地方有特殊的定位信息
5、其他情况,还是比较多的,经常遇到。
如果懂汇编,最好看看汇编。
如果不懂,看看那一条语句是最后一条能够跟踪的语句。
仔细看看最后一条语句的所有变量,应该能猜出来是什么问题。
实时数据库实时数据库的常规功能
4. 智能化恢复和负载均衡:PTimeDB采用动态负载均衡技术,能智能地在多台主机间分配负载,即使出现故障也能快速恢复,提供企业级部署的灵活性。5. 数据保护与恢复:PTimeDB支持无障碍主机迁移,压缩文件直接访问和索引库重建,采用序列化存储增强灾难恢复能力,配置灵活,保障数据安全。6. CIM模型集成:P...
JSP中Servlet调用sp_attach_db动态附加数据库
("jdbc:sqlserver:\/\/localhost:1433;database=master","sa","123456");("jdbc:sqlserver:\/\/localhost:1433;dataName=master","sa","123456");我也不确定是不是的 都忘记了
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsof...
“Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsoft][ODBC”,此问题的原因:没有正确注册某些动态链接库文件(.dll文件)。解决的方法和操作步骤如下:1、首先,按键盘“win+r”打卡“运行”窗口,如下图所示。2、其次,在输入框中输入“cmd”命令并回车确定,如下图所示。3、...
DELPHI基础教程:Delphi客户服务器应用开发(三)[1]
CONNECT EXE 测试工作站和InterBase服务器连接情况的工具REMOTE DLL InterBase的支持动态链接库 GDS DLL GDS DLL将InterBase服务器描述 安装过程修改工作站的SERVICES文件以增加用于加入SERVICES文件 InterBase 服务器访问所需的协议描述 如 gds db \/tcp ━━━ 软件项目中还应包括TCP\/IP接口软件 下表列出...
sql server如何读取cpu1212c里面db块的数据?
参考以下:1)SQL Server无法直接操作西门子1200中的DB块数据 解决方法:1)做一个软件,语言的话可以使用C#,界面使用Winform,与PLC通讯使用S7协议的动态链接库,然后编写SQLHelper类来操作SQL Server数据库。这样软件可以通过S7协议读取和写入西门子地址,然后将数据保存到SQL Server数据库 ...
Powerbuilder 10.0应用程序发布及动态配置ODBC
Powerbuilder编制的程序打包分为两部分 动态库文件及配置ODBC数据源 一 动态库文件 由PB 自带的打包工具:PowerBuilder Runtime Packager 在Database? Interfaces选项中 选择 ODBC Database Driver(ODB) Sybase Adaptive Server Enterprise(SYC) 便可生成程序所需要的动态库安装程序包 然后将程序包...
java连接数据库中的DBConn.getConn()为空怎么办
JDBC连接数据库必须要有的条件:加载的驱动 要连接的数据库 账号 密码 这些你都没有,以下是我写的一个连接:这个连接包含了增删改查的处理,也包含了资源的释放。下面是查询方法:然后调用就好了 如果有帮助请采纳
[高分]java方面的问题:请教高手db.properties连接池的用法
用JDBC访问数据库首先要创建与数据库之间的连接,获得一个连接对象(Connection),由连接对象提供执行SQL语句的方法。本文介绍的数据库连接池包括一个管理类DBConnectionManager,负责提供与多个连接池对象(DBConnectionPool类)之间的接口。每一个连接池对象管理一组JDBC连接对象,每一个连接对象可以被任意数量的Servlet共享。
Delphi数据库的动态建立
一 Table方法 (以建立paradox数据表为例假设库名为ljh db) 新建一工程文件zhoudf dpr 在unit 中的uses语句中加入db dbtables单元 在面板上选取button元件置于form 表中 双击button 输入如下代码 Procedure Tform Button Click(Sender: Tobject);var table :ttable; begin table :=ttable create(self...
无法定位程序输入点 于动态链接库
详情请查看视频回答
帛南盐酸: 是不是安装的时候没有选择安装实例,实例是安装时候可以选的
霍城县13751964855: vs2010加载动态库,第一次成功,第二次失败 - ?
帛南盐酸: 通常这样的问题都是FreeLibrary失败造成的(或者根本没有释放). 释放失败,对于自建的DLL,先查找代码原因,先看FreeLibrary的报错,再查全局变量和内存泄露.
霍城县13751964855: Linux系统中,C++编程 在程序中调用一个动态库里的函数 编译成功,但实际没有执行该函数,请问为什么啊~ - ?
帛南盐酸: 不知道对你有没有帮助,我遇到过类似的问题,最后发现是自己写的函数名跟库中的一样,导致自己的函数没有被执行,或许你换一下函数名,再试一下
霍城县13751964855: VC++中动态链接库的显示加载和隐式加载的区别? - ?
帛南盐酸: 两种方法对于你的程序调用动态库时没有任何区别,只是你在编程时,步骤是不一样的.显式调用麻烦了点,但可以没有相应的lib库;隐式调用,使用起来比较简单,有函数的声明就可以了,但必须有lib库.在VC中两种方式的具体方法:一、...
霍城县13751964855: php中怎么验证加载gd2.dll函数库成功 - ?
帛南盐酸: 1.可以使用 extension_loaded() 函数判断动态扩展是否加载. bool extension_loaded ( string $name ) 加载成功则返回true2.注意在代码顶端加上 header("Content-type: image/gif"); 输出头信息.
霍城县13751964855: Excel2007nbsp;amp;quot;数据分析工具”加载成功了,但它却不能在“数据”项菜单下显示,请问如何解决? - ?
帛南盐酸: 既然Excelnbsp;2007数据选项卡中没有显示,你怎么知道加载成功了呢?点击左上角Office标志图标,Excel选项,加载项,在下面的管理下拉列表中选择“Excel加载项”,转到,勾选“分析工具库”,确定.你是按上面的操作进行的吗,如果...
霍城县13751964855: 开机出现动态库无法加载,名字叫nbyvrv.dll,请问如何解决 - ?
帛南盐酸: 加载C:\WINDOWS\dll(****就是你的那个找不到的文件名)出错的处理办法: 开始--运行--msconfig--启动--找到和你说的类似的选项*...
霍城县13751964855: led控制系统设置加载成功后,节目下建立文本,发送后显示数据包发送成功,但是显示屏上不亮灯 - ?
帛南盐酸: 确认文本里有内容吗,再就是在设置里调,使能,OE,还有可能就是显示屏的第一块电源和控制卡是不是单控的有没有问题,
霍城县13751964855: 我在加载SQL jdbc驱动加载不成功,但是项目中已经添加了 - ?
帛南盐酸: 具体报什么错误,JDBC的问题会有很多,不一定是驱动没有加载成功,检查一下代码:1. JDBC部分代码是否都放在了try块中;2. 报的错误是加载驱动失败还是连接数据库失败,甚至是后续执行SQL语句失败;3. 到官网检查一下JDBC驱动的版本,是否符合你目前JDK的版本
霍城县13751964855: 单元板LED显示正常,数据加载成功,发送也成功,显示屏上不显示,是怎么回事 - ?
帛南盐酸: 个人建议,你先查查单元板的电源有没有到位,到位后再查一下控制卡输出的信号是否正常(简单又土的方法是拿一块确认是好的单元板接上控制卡的信号输出端,如果能正常显示代表控制卡没问题,如果不行那就是控制卡有问题了),如果控制卡没问题了,那就是单板的信号无法输入,要修板的话建议检查信号传输这一方面的问题,不过个人建议还是更换板吧.