为了调试编译的应用程序,有必要将IL代码或二进制的机器代码与源代码行进行匹配。虽然数据可以嵌入在应用程序中,但这会显著增加EXE或DLL文件的大小。取而代之的是,通常会使用单独的“symbols”文件。在Windows平台上,这被称为PDB或“程序数据库”。

早期PDB格式是为了C和C++设计的,发展了多年以来现在已经支持.NET了。不幸的是,这种格式一直以来都被认为是专有的,这就意味着它没有很好文档记录,而且只能使用Windows库读取。

有了.NET Core,就需要一个新的跨平台PDB库。然而,不仅仅只是转移现有的库,Microsoft选择重写Windows PDB格式。新的Portable PDB格式删除了本地代码所需的功能,只保留了.NET功能。通过这样做,可以简化格式,并显著减小PDB文件大小。

Portable PDB格式是公开记录的,还有用来读取它的开源库。但有一些缺点:Portable PDB格式不支持编辑及继续、FXCop风格代码分析(Roslyn代码分析可与运行)、性能分析工具、后编译构建步骤,如AOP、Code Contracts或是.NET decompilers。这些局限会进行改进,但需要时间来升级工具以支持新的格式。

最新版本的Mono也完成了对PDB的支持,具体参看https://trello.com/c/XaXWkasc/44-add-portablepdb-support-into-the-mono-ecosystem

原文地址:http://www.infoq.com/cn/news/2017/02/Portable-PDB


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

介绍Portable PDB相关推荐

  1. NuGet 符号服务器

    在新的 VisualStudio 支持使用 NuGet 符号服务器,可以支持新的 Portable PDB 调试符号的库,本文告诉大家如何打包上传带符号的库和使用符号服务器 在 2018 的 11 月 ...

  2. 一篇万字长文读懂微软PDB、SourceLink——.net core之nuget 包调试

    序言 在大前年,为了说服框架组采用Nuget包的形式分发框架类库,我费了老鼻子的劲也没有取得成功,其中最致命的一个问题是,nuget包不能获得源码调试级的支持,在分发和包的管理形式上其比其他方案都优秀 ...

  3. pdb断点命令_Python使用pdb更优雅的调试代码

    什么是pdb 不知道大家在用Python写代码出现报错时是怎样调试的,从报错提示定位回去一步一步check每一行?如果没有IDE或者命令行写代码时又该怎样快速调试?这时如果使用pdb进行调试将会异常方 ...

  4. debug命令_Python 必备 debug 神器:pdb

    目录 叨逼叨 使用介绍 举个简单的栗子 叨逼叨 首先,介绍一下 pdb 调试,pdb 是 python 的一个内置模块,用于命令行来调试 Python 代码.或许你会说,现在用 Pycharm 等编辑 ...

  5. oracle12c关闭pdb,oracle 12c pdb启动与关闭

    在oracle 12c pdb数据库默认是不起来的,下面介绍一下pdb起关的一些常用命令. 默认状态: SQL> show pdbs CON_ID CON_NAME OPEN MODE REST ...

  6. pdb—Python调试器

    pdb-Python调试器 在python 3.8文档 Python 常用指引中已经详细介绍了pdb模块,此处为引用官方文档 该模块pdb为Python程序定义了一个交互式源代码调试器.它支持在源代码 ...

  7. pdb python 命令_使用pdb进行Python调试(下)

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 显示表达式 与使用p和pp打印表达式类似,你可以使用命令display [expression]告诉pdb ...

  8. python pdb调试_使用Pdb进行Python调试

    python pdb调试 Debugging applications can sometimes be an unwelcome activity. You're busy working unde ...

  9. oracle 18c 18.3 学习之五 unplug drop plug pdb

    os: centos 7.4 db: oracle 18c(18.3) pdb 的优势之一就是 unplug.plug,本篇blog介绍下 pdb 的 unplug. 以 pdbdongg 为例,进行 ...

最新文章

  1. 公示 | 清华大学大数据研究中心“RONG”奖学金获奖名单
  2. 关于网易云音乐爬虫的api接口?
  3. 《利用Python》进行数据分析:Numpy基础2 创建数组
  4. 网易云信国际短信上线啦!
  5. 【Qt】Qt布局管理器
  6. Linux系统中df与du命令查看分区大小
  7. Linux下SVN安装配置全程实录(转)
  8. ai人工智能编程_从人工智能动态编程:Q学习
  9. 【解决】ERROR in xxx.js from UglifyJs
  10. IoT -- (八)MQTT优缺点
  11. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(5) - 控制转移指令
  12. opencv 特征匹配和
  13. jquery mysql表格_使用jQuery设计数据表格:设计表格基类
  14. Ansible详解(一)——Ansible理论基础
  15. 【图像重建】基于matlab卷积神经网络的图像超分辨率重建【含Matlab源码 1816期】
  16. 用安卓手机搭建一个可用渗透测试环境/安卓手机搭建linux环境
  17. 数据中台数据分层架构
  18. VMware VCP-DCV认证课程概述
  19. 通过fpga实现占空比的改变
  20. Kivy转apk——使用打包虚拟机(亲测~)

热门文章

  1. 基于Redis的MQ中间件实现-目录
  2. 利用“多说”制作留言板、评论系统
  3. [LeetCode]119.Pascal#39;s Triangle II
  4. 17款加速效率的CSS工具
  5. Linux5配置jboss环境
  6. Prism For WPF Login对话框又简单又合理的方案之一
  7. Blazor Day
  8. 一个简单的规则引擎例子
  9. Dapr Meetup 3.22【周六】
  10. 如何在 ASP.Net Core 中使用 MiniProfiler