Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    kgdb调试内核模块无法进入断点

    编译和烧写问题专区
    1
    2
    1199
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Z
      zjbxzf LV 3 last edited by

      问题描述:用KGDB在线调试disp模块时总是进入不了disp_module_init函数内部,disp_prob内部也进不去。

      在内核启动初期进入kgdb,
      add symbol table from file "/smbshare/dragonboard/buildroot/target/dragonboard/rootfs/lib/modules/3.4.39/disp.ko" at
      .text_addr = 0xbf000000
      .bss_addr = 0xbf0e20d8
      .data_addr = 0xbf02dad0
      .devinit.text_addr = 0xbf023c3c
      .exit.text_addr = 0xbf023e24
      .gnu.linkonce.this_module_addr = 0xbf0e1f64
      .init.text_addr = 0xbf0f4000
      .note.gnu.build-id_addr = 0xbf023ee8
      .pv_table_addr = 0xbf029b8c
      .rodata_addr = 0xbf023fc0
      .rodata.str1.1_addr = 0xbf0255ac
      .strtab_addr = 0xbf0ff974
      .symtab_addr = 0xbf0f4154
      .text.unlikely_addr = 0xbf023ea8
      __kcrctab_addr = 0xbf023f84
      __ksymtab_addr = 0xbf023f0c
      __ksymtab_strings_addr = 0xbf028dcb
      __mcount_loc_addr = 0xbf028ed0
      (y or n) y
      Reading symbols from /smbshare/dragonboard/buildroot/target/dragonboard/rootfs/lib/modules/3.4.39/disp.ko...warning: section .strtab not found in /smbshare/dragonboard/buildroot/target/dragonboard/rootfs/lib/modules/3.4.39/disp.ko
      warning: section .symtab not found in /smbshare/dragonboard/buildroot/target/dragonboard/rootfs/lib/modules/3.4.39/disp.ko
      done.
      (gdb) b disp_module_init
      Breakpoint 4 at 0xbf000000: disp_module_init. (2 locations)
      设置断点时发现有2个位置
      (gdb) i b 4
      Num Type Disp Enb Address What
      4 breakpoint keep y <MULTIPLE>
      breakpoint already hit 1 time
      4.1 y 0xbf000000 in disp_sync_finish_process
      at drivers/video/sunxi/disp/dev_disp.c:1687
      4.2 y 0xbf0f4010 <init_module+16>

      查看源码
      (gdb) list disp_module_init
      1682
      1683 return ret;
      1684 }
      1685
      1686 static void __exit disp_module_exit(void)
      1687 {
      1688 __inf("disp_module_exit\n");
      1689
      1690 #ifdef CONFIG_HAS_EARLYSUSPEND
      1691 unregister_early_suspend(&backlight_early_suspend_handler);
      (gdb)
      行号完全不对,向下移动了很多行,应该在1642行
      02c7ffa5-1f39-47f0-90db-ee05451bba33-image.png
      全速运行停在下面位置
      (gdb) c
      Continuing.

      Breakpoint 4, 0xbf0f4010 in init_module ()
      再全速就执行完了,根本进入不了函数内部。

      不知道问题出在哪里?

      Z 1 Reply Last reply Reply Quote Share 0
      • Z
        zjbxzf LV 3 @zjbxzf last edited by

        @zjbxzf 问题解决把初始化函数前的__init去掉就行了

        1 Reply Last reply Reply Quote Share 0
        • 1 / 1
        • First post
          Last post

        Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

        行为准则 | 用户协议 | 隐私权政策