• Public Symbols and Private Symbols


    When you build a driver or other program, the program's symbols are usually stored in symbol files, although some older compilers store certain symbols in the executable file. When a debugger is analyzing a program, it needs to access the program's symbols.

    Typically, symbol files can include any or all of the following symbols:

    • The names and addresses of all functions

    • All data type, structure, and class definitions

    • The names, data types, and addresses of global variables

    • The names, data types, addresses, and scopes of local variables

    • The line numbers in the source code that correspond to each binary instruction

    Some program developers might feel uncomfortable sharing all this information with their customers. BinPlace can be used to reduce the amount of symbols in a symbol file.

    Some basic symbols, such as function names and global variables, are needed for even the most rudimentary debugging. These are called public symbols. Symbols such as data structure names, global variables visible in only one object file, local variables, and line number information are not always required for debugging, although they are useful for a more in-depth debugging session. These are called private symbols.

    A symbol file that contains both private and public symbols is called a full symbol file. A symbol file that contains public symbols alone is called a stripped symbol file.

    BinPlace can create a stripped symbol file. It does this by creating a new symbol file that contains only public symbols; the private symbols are removed ("stripped" out). When the most common BinPlace options are used (-a -x -s -n), the stripped symbol files are placed in the directory that is listed after the -s switch, and the full symbol files are placed in the directory that is listed after the -n switch.

    When BinPlace strips a symbol file, the stripped and full versions of the file are given identical signatures and other identifying information. This allows you to use either version for debugging.

    Note   BinPlace will strip private symbols out of a symbol file when the symbol file is in the same directory as the executable file, and you specify the name of the executable file (along with the appropriate options) on the BinPlace command line. You should not specify the name of the symbol file itself -- doing so will result in BinPlace moving the file without altering it.

    If you need to determine whether a symbol file contains private symbols, you can use the SymChk tool. SymChk is part of the Debugging Tools for Windows package, and is documented in the help file accompanying that package. See Debugging Tools for NT-Based Operating Systems for details.

  • 相关阅读:
    (转) dedecms中自定义数据模型
    (转)dedecms网页模板编写
    (转)dedecms入门
    (转)浅谈dedecms模板引擎工作原理及自定义标签
    (转)PHP数组的总结(很全面啊)
    (转)echo和print的区别
    (转)dedecms代码详解 很全面
    (转)php 函数名称前的@有什么作用
    (转)PHP正则表达式的快速学习方法
    GIS中mybatis_CMEU的配置方法
  • 原文地址:https://www.cnblogs.com/whyandinside/p/1811895.html
Copyright © 2020-2023  润新知