关于建设symbol store的建议

2023-05-16



 

一、symbol store的需求分析:

       1、我们现在的调试环境严重依赖开发人员自己使用的开发环境,缺点在于其他人要进行调试要么搭建一个同样的环境,严重地占去大家不必要花费的工作时间,进一步带来的问题是各个版本的源代码流落各处,易出问题,要么就只有交给原开发人员,同样带了严重的交流时间开销,而且不仅原开发人员的工作会被打断,而且需求人还要在这个过程中等待。

2、即便是开发人员自己面对不同版本的调试,也是一个令人挠头的事情,即便是现在我们保存了map文件,但是调试的便利与效率,相信也是大家希望进一步提高的。

如何改变现有的调试难的问题,并且提高大家的调试效率,应该是一个需要考虑的问题。

 

二、搭建symbol store的调研:

       使用过MS的调试符号服务器的同事,大概已经领略到调试符号服务器的高效率。经过调研,可以确认我们可以搭建自己的调试符号服务器,相关事项罗列如下:

       1、如何设置你的VC Project

在VC的Project Settings对话框上,选择你要设置的Project(如果有多个Poject的话),选择你要设置的build选项(一般为Win32 Release),在Link页上,Category选择General,然后选择Generate debug info,或者Category选择Debug,然后选择Debug info,选择Microsoft format。

这样如果生成不了pdb,或者生成的pdb有错误,同样在VC的Project Settings对话框上,选择你要设置的Project(如果有多个Poject的话),选择你要设置的build选项(一般为Win32 Release),在C/C++页上,Category选择General,在Debug info中,选择C7 Compatible或Program Database

你原有的优化等选择都不必改变,这样设置会产生一个pdb文件,就是我们所需要的调试符号了,这样会导致你的exe或dll等生成模块会多出一定数目的字节,不必担心,这是链接器在你的模块里加入了对这个pdb的一个指引,并没有任何调试信息包含到你的模块。

2、如何变绝对路径为相对路径

前面讲到在你的模块里有一个对pdb的指引,有一点比较讨厌,就是这个指引使用了绝对路径——你build这个模块时的绝对路径,我们要做得像MS的一样,去除这个绝对路径,MS提供一个工具来做这件事,那就是Binplace,它甚至可以让你为使用你的接口的客户提供受限的符号文件,具体可参考MS的帮助文档。

 

binplace -a -x -s %stripped_path-n %full_path% %bin_path% -r %RootDestinationPath% -:DEST %ClassPath%

 

使用时请替换%stripped_path %、%full_path %、%bin_path%、%RootDestinationPath%、%ClassPath%

 

3、如何添加调试符号到仓库

请首先安装windbg,然后使用如下脚本:

 

set path=C:\Program Files\Debugging Tools for Windows;%path%

 

symstore add /r /p /f %YOUR_PDB_PATH%\*.* /s %SYMBOL_STORE_PATH% /t "ivtdriver"

 

使用时请替换%YOUR_PDB_PATH %,与% SYMBOL_STORE_PATH %

4、如何引用仓库中的调试符号

设置环境变量:

 

_NT_SYMBOL_PATH=srv*DownstreamStore*SYMBOL_STORE_PATH*http://msdl.microsoft.com/download/symbols

 

使用时,请注意替换DownstreamStore,与SYMBOL_STORE_PATH

这样,在以后使用windbg调试程序或分析dmp文件时,就可以自动取得我们自己的调试符号了。

 

三、建立symbol store的步骤:

1、  确定symbol store的路径,申请服务器空间,用WEB是个好主意,用共享文件夹也不错

2、  修改现有VC Project的设置,生成pdb(请不要丢了map设置,没准儿还有用)

3、  应用binplace工具,让pdb文件中的绝对路径变相对路径

4、  应用symstore工具,将pdb文件添加到symbol store

 

四、应用symbol store的步骤:

       1、设置环境变量_NT_SYMBOL_PATH,引用我们自己的symbol store

 

五、总结:

       结合我前面提出的daily build script,大家现在可以在里面提供自动向symbol store添加pdb的脚本,这样一定会很爽,呵呵。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于建设symbol store的建议 的相关文章

随机推荐

  • 为什么越来越多的企业选择云计算?—分析云计算的优势和未来发展趋势

    文章目录 一 什么是云计算 xff1f 二 为什么越来越多的企业选择云计算 xff1f 三 云计算的优势和未来发展趋势3 1 云计算的优势3 2 未来发展趋势 一 什么是云计算 xff1f 云计算是一种基于互联网的计算模式 xff0c 它可
  • 图像配准代码(包含matlab/opencv C++)

    1 论文链接 https ieeexplore ieee org abstract document 7769090 2 gitHub源代码链接 https github com wenzelian Image Registration
  • SLAM-ch3-实践Eigen

    1 eigenMatrix cpp include lt iostream gt include lt ctime gt include lt eigen3 Eigen Core gt include lt eigen3 Eigen Den
  • ubuntu中使用VsCode+Eigen创建Eiegn应用程序

    Visual studio code是微软发布的一个运行于 Mac OS X Windows和 Linux 之上的 xff0c 针对于编写现代 Web 和云应用的跨平台源代码编辑器 1 VsCode安装 VScode官网下载 deb文件 网
  • ubuntu+VsCode+Cmake+eigen 开发eigen应用

    以下内容参见官方文档 xff1a https code visualstudio com docs cpp cmake linux 1 安装Cmake工具 点击左侧的Extensions 搜索Cmake tools 这里已经安装 2 安装C
  • 树莓派 Ubuntu mate 18.04 下开启vncserver

    1 安装 vncserver sudo apt get y install vnc4server 2 启动 vncserver xff08 首次启动需要设置密码 xff09 vncserver Ubuntu mate里面是 mate des
  • 树莓派 Ubuntu mate 18.04 修改为清华源

    1 备份源 cp etc apt sources list etc apt sources list bck 2 root身份打开 etc apt sources list 将每个 http ports ubuntu com 都替换为 ht
  • 动手学深度深度学习-pycharm中配置mxnet开发环境

    1 文件准备 1 下载包含本书全部代码的压缩包 我们可以在浏览器的地址栏中输https zh d2l ai d2l zh 1 0 zip 下载后解压 2 由于近来 2019 05 05 国内conda源被迫关闭 xff0c 因此通过cond
  • dbm和db的关系与区别

    db是无量纲单位 xff0c 它表示两个信号之间的幅度差 dbm是有量纲单位 xff0c 它表示以1毫瓦为基准时的计量单位 1 dbm dbm是一个考征功率绝对值的值 xff0c 计算公式为 xff1a 10lg10 xff08 P 1mw
  • linux.和stm32驱动的区别

    linux下的驱动和stm32驱动的区别 xff1f stm32的驱动分为2部分 xff0c 初始化和发送接收数据 xff0c 这个理论概括了spi xff0c iic xff0c uart xff0c sdio xff0c usb 在li
  • SUMO入门(四) - 需求建模 车辆和路线的定义

    SUMO入门 四 需求建模 车辆和路线的定义 Demand Introduction to demand modelling in SUMO 在生成网络之后 xff0c 可以使用SUMO GUI来查看它 xff0c 但是没有汽车可以行驶 人
  • 图像处理特征可视化方法总结(特征图、卷积核、类可视化CAM)(附代码)

    一 前言 众所周知 xff0c 深度学习是一个 34 黑盒 34 系统 它通过 end to end 的方式来工作 xff0c 输入数据例如RGB图像 xff0c 输出目标例如类别标签 回归值等 xff0c 中间过程不可得知 如何才能打开
  • deian10 安装aptitude

    debian10系统不会默认安装aptitude xff0c 导致需要处理大量依赖关系的软件安装变得很麻烦 常规的apt源可以安装aptitude xff0c 但是需要手动处理大量的依赖包安装 可以通过如下apt源使用apt get来安装a
  • DJI OSDK开发笔记(N3飞控)(1)——开发工作流程

    DJI OSDK开发笔记 xff08 N3飞控 xff09 xff08 1 xff09 开发工作流程 API层次结构硬件设置一般设置数据串口 连接器引脚排列连接到记载计算机 软件环境设置所有平台下载SDK和所需工具更新固件启用OSDK AP
  • Windows Vista 交互式服务编程

    Windows Vista 对快速用户切换 xff0c 用户账户权限 xff0c 以及服务程序所运行的会话空间都作了很大的改动 xff0c 致使一些原本可以工作的程序不再能够正常工作了 xff0c 我们不得不进行一些改进以跟上 Vista
  • Windows2000 服务器端应用程序开发设计指南-信任成员的管理

    Microsoft的开发者已经完成Microsoft Windows 2000安全性特色的设计工作 xff0c 这些安全性特色比大多数人所习惯的环境更复杂且更有弹性 事实上 xff0c 若加上适当的管理和软件开发 xff0c Windows
  • NoDriveTypeAutoRun键值的作用

    常见的Autorun inf文件格式大致如下 xff1a AutoRun 表示AutoRun部分开始 xff0c 必须输入 icon 61 C ixigua ico 指定给C盘一个个性化的盘符图标C ico open 61 C ixigua
  • Windows系统调用架构分析—也谈KiFastCallEntry函数地址的获取 .

    为什么要写这篇文章 1 因为最近在学习 软件调试 这本书 xff0c 看到书中的某个调试历程中讲了Windows 的系统调用的实现机制 xff0c 其中讲到了从Ring3 跳转到Ring0 之后直接进入了KiFastCallEntry 这个
  • ubuntu rc.local不能正常运行

    查了下rc local有时不能正常运行的原因 xff1a Ubuntu默认将 bin sh链接到 bin dash xff0c 而 etc rc local脚本中用的正是 bin sh xff0c 导致出错 将默认的shell改成bash的
  • 关于建设symbol store的建议

    xfeff xfeff 一 symbol store的需求分析 xff1a 1 我们现在的调试环境严重依赖开发人员自己使用的开发环境 xff0c 缺点在于其他人要进行调试要么搭建一个同样的环境 xff0c 严重地占去大家不必要花费的工作时间