各路高手,
我使用交叉编译的gdbserver调试程序,宿主机是PC linux, 目标机是ARM Linux(At9200的处理器), 操作如下:
先在ARM板上执行: [root@YL9200 ~] gdbserver 192.168.2.68:2345 --attach daemon (板上的daemon程序不包含调试符号信息)
然后在PC上执行: [root@localhost daemon] gdb (gdb)file daemon <-- 这个文件中有调试符号信息 ......(一堆提示,这些提示信息中包含有解析宿主机上动态库的符号, 也就是加载了在/lib和/usr/lib两个目录下的动态库符号表。但这是不希望的, 正确的结果是gdb能从交编译库目录/usr/local/arm/3.4.6/sysroot/lib和/usr/local/arm/3.4.6/sysroot/usr/lib下查找动态库,并加载其中的符号表。)
(gdb)target remote 192.168.2.168:2345 .......(又是一小堆提示,这一堆提示最后有一条提示信息,大意是调试信息或与源代码存在对齐问题,事实上,我使用的就是原代码在编译时的目录,区别只在于动态库部分,前一步的加载位置出错。)
连接上后不能调试程序,不论以何种方式执行,target都会自动退出。
我的设备都在家里,晚上才能把更详细的提示信息贴出来。有劳这方面有经验的朋友现身指导一下,期待中ing....
|