• ERROR: Symbol file could not be found. Defaulted to export symbols for ntkrnlpa.exe


    关于windbg调试符号表配置路径错误的问题探讨 (转载)

    打开windbg.exe 开始进行‘内核调试’(kernel debug)时,
    命令行窗口输出错误提示 :
    Connected to Windows XP 2600 x86 compatible target, ptr64 FALSE

    *** ERROR: Symbol file could not be found. Defaulted to export symbols for ntkrnlpa.exe - 
    Loading Kernel Symbols
    ..................................................................................................................................................
    Loading User Symbols
    ............................................................................................................
    Loading unloaded module list
    .........................

    当在命令行中输入!process 0 0命令时,output窗口输出内容为:
    lkd> !process
    NT symbols are incorrect, please fix symbols

    以上信息说明 符号文件(symbol files)与当前调试的系统版本不符 或者 符号文件路径设置错误

    在下载符号文件时,应该先确定我们将要调试的系统的版本:如版本为xp_sp3_enu,则下载相应的符号文件:WindowsXP-

    KB936929-SP3-x86-symbols-update-ENU.exe。如果版本为中文版,则下载相应的CHS版。

    下载了符号文件后,解压到个人指定的文件夹-"x:/symbols_folder"。
    然后,开始打开windbg调试前,设定系统环境变量''_NT_SYMBOL_PATH'',值为符号文件目录x:/symbols_folder。

    (windbg中帮助文件如是写:Before you start the debugger, use the _NT_SYMBOL_PATH and _NT_ALT_SYMBOL_PATH environment variables to set the path. The symbol path is created by appending _NT_SYMBOL_PATH after _NT_ALT_SYMBOL_PATH.)
    打开windbg调试前,按下ctrl+s打开"symbol file path"项配置符号文件路径,可填入

    x:/symbols_folder;srv*x:/symbols_folder*http://msdl.microsoft.com/download/symbols
    其中不同的路径用分号(;)分隔。以上设置srv*x:/symbols_folder*http://msdl.microsoft.com/download/symbols的原因为,当

    我们下载下来的符号文件x:/symbols_folder中有缺少或者损坏的文件时,windbg因找不到对应文件而报错(自己就因这个问题而

    浪费了大量时间去查错,经过反复设置均不能解决.后来从目录中查到是ntdll.pdb与ntkrnlmp.pdb两个文件不符),当在路径中加入

    srv*x:/symbols_folder*http://msdl.microsoft.com/download/symbols后,当windbg找不到对应的符号文件时,就会自动连接

    http://msdl.microsoft.com/download/symbols,把缺少的东西下载到x:/symbols_folder。下载期间,我们应耐心等待(时间

    的长短视网速及缺少文件数多少而定,整个symbols压缩文件164M。自己下载下来的符号文件中就因ntdll.pdb与ntkrnlmp.pdb不符

    而总是报错),之后,动人的一面开始展现:
    Connected to Windows XP 2600 x86 compatible target, ptr64 FALSE
    Symbol search path is:

    F:/sys_symbols/;F:/sys_symbols;SRV*f:/sys_symbols*http://msdl.microsoft.com/download/symbols
    Executable search path is: 
    *******************************************************************************
    WARNING: Local kernel debugging requires booting with kernel
    debugging support (/debug or bcdedit -debug on) to work optimally.
    *******************************************************************************
    Windows XP Kernel Version 2600 (Service Pack 3) MP (2 procs) Free x86 compatible
    Product: WinNt, suite: TerminalServer SingleUserTS
    Built by: 2600.xpsp_sp3_gdr.090804-1435
    Kernel base = 0x804d7000 PsLoadedModuleList = 0x805634c0
    Debug session time: Sat Mar 20 22:07:50.656 2010 (GMT+8)
    System Uptime: 0 days 3:40:45.403


    小结:

    1. windbg符号文件路径搜索的两个位置:环境变量中的_NT_SYMBOL_PATH设置及windbg中的"symblos file path";

    2. 设置srv*x:/symbols_folder*http://msdl.microsoft.com/download/symbols 路径是保证我们能快速正确使用windbg的法门,呵呵。

  • 相关阅读:
    【arm】arm平台下char默认数据类型与-fsigned-char
    【arm】arm指令集架构和处理器命名规则和历史
    【shell】正则表达式用法:匹配不包含字符串
    【arm】arm后缀.s和.S的区别以及asm.S说明
    【Optimization/x86】内联汇编Inline assembly——基础学习
    【Optimizaiton/x86】x86 SSE Intrinsic: 点乘算法的Intrinsic实现
    【Optimizaition/x86】Intel CPU的CPUID指令获取的C实现
    【linux】Linux中Core Dump分析
    【shell】linux 查看文件夹以及文件大小数目等信息
    【arm】arm-assembly-print-register-value-in-decimal
  • 原文地址:https://www.cnblogs.com/zcc1414/p/3982424.html
Copyright © 2020-2023  润新知