当前位置:  技术问答>linux和unix

调试驱动时候,经常跳出来undefined、、、????

    来源: 互联网  发布时间:2016-05-22

    本文导语:  头文件应该全了: #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  //++,fire #include  #include "serial_vk3233.h" 声明也有了: extern int uart_register...

头文件应该全了:
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include  //++,fire
#include 
#include "serial_vk3233.h"

声明也有了:
extern int uart_register_driver(struct uart_driver *drv);
extern void uart_write_wakeup(struct uart_port *port);
extern void uart_unregister_driver(struct uart_driver *drv);

具体使用:
static int __init vk3233_serial_init(void)
{
vk3233_init_ports();
printk(KERN_ALERT "vk3233_serial_init()n");
return uart_register_driver(&vk3233_reg);
}

static void __exit vk3233_serial_exit(void)
{
uart_unregister_driver(&vk3233_reg);
printk(KERN_ALERT "EXIT VK3233n");
vk3233_write_reg(0,VK3233_GCR,0x40);
}

uart_register_driver(),uart_unregister_driver undefined()这两个函数在工程另外一个文件中定义了!!
调试时候,经常提示uart_register_driver,uart_unregister_driver undefined、、、、、

为什么啊???
有人能不能给指点一下、、、??

|
uart_register_driver(),uart_unregister_driver undefined()这两个函数在工程另外一个文件中定义了
!!
调试时候,经常提示uart_register_driver,uart_unregister_driver undefined、、、、、 
=================================================================================================

把這個兩個函數實現體所在的文件編譯的時候也需要加上 -g 的選項才行

|
uart_register_driver(),uart_unregister_driver undefined()这两个函数在工程另外一个文件中定义了!! 
调试时候,经常提示uart_register_driver,uart_unregister_driver undefined、、、、、 
你把它们的头文件直接包含在这里试试。

|
能夠支持調試的,必須要生成的目標文件里面有調試信息才行!你那兩個函數裡面沒有調試信息,自然在調試的

時候會報錯了。解決的辦法就是,你先把那兩個函數所在的.c文件,在編譯成.o的時候,加上調試選項,就是上

面說的-g,然後多個.o連接生成可執行程序的時候,裡面才能有那兩個函數的調試信息,否則是沒有的。

不過,如果那兩個函數所在的是庫,而你又沒有庫的源碼,那基本上就沒希望了,在gdb裡面調試,至多能看到反

彙編代碼而已

|
另外的工程里的定义函数下面要加:
EXPORT_SYMBOL(uart_register_driver);
EXPORT_SYMBOL(uart_write_wakeup);
EXPORT_SYMBO(uart_unregister_driver);

Makefile要加
-DEXPORT_SYMTAB
参数

|
很好奇你是怎么调试内核驱动的?

|
cat Linux/.config | grep CONFIG_SERIAL_VK3233
看看你的CONFIG_SERIAL_VK3233是不是选上了

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • python之平台独立的调试工具winpdb介绍
  • 有调试经验的高手请进:调试程序如何生成core?如何调试core文件定位错误。
  • 如何使用linux下gdb来调试python程序
  • kdevelop开发 网络程序 如何调试? 如何调试服务器端的程序
  • kgdb调试环境配好了,怎么调试内核阿?????
  • UNIX下可逐行调试的调试软件
  • 大家一般用什么调试器调试intell格式的汇编?
  • unix/linux知识 iis7站长之家
  • linux下用gdb调试程序感觉非常不方便,不知道大家使用的什么工具进行调试的呀?
  • 关于GDB无法调试segmentaton fault的问题,调试就死机
  • ?:兄弟们,谈谈jsp的调试环境吧,谁有好的调试方法啊?
  • linux 新手散分贴 我要在linux下调试多个.c和.h文件的程序 怎么调试?
  • UNIX下C++可以用ddd来调试,请问bash shell程序有什么好的调试工具么??
  • 如何调试多线程的代码? 多何调试网络代码 服务器的和客户端的
  • 程序访问内存非法退出,调试core时,却发现#0 0x00000000 in ?? () ,奶奶的,已经加了调试信息了
  • gdb调试时命令行参数如何输入?比如main(int argc,char **argv)中,我要把一个filename作为argv[1]传入给gdb调试
  • linux gdb: 我在一台机器上编译的程序用GDB可以调试,把程序放到另外一台机器上调试,调试信息就没有了 这是什么原因呢?
  • 为什么JCreator Pro 2.00_007不能进行单步调试,Build菜单下单步调试的选项是灰色的???好痛苦。。
  • gdb调试如何跟踪进入另外一个包含文件的内部函数进行调试?
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • gdb调试,每次循环怎么运行到指定的断点处,而不是单步调试


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3