介绍Portable PDB
为了调试编译的应用程序,有必要将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相关推荐
- NuGet 符号服务器
在新的 VisualStudio 支持使用 NuGet 符号服务器,可以支持新的 Portable PDB 调试符号的库,本文告诉大家如何打包上传带符号的库和使用符号服务器 在 2018 的 11 月 ...
- 一篇万字长文读懂微软PDB、SourceLink——.net core之nuget 包调试
序言 在大前年,为了说服框架组采用Nuget包的形式分发框架类库,我费了老鼻子的劲也没有取得成功,其中最致命的一个问题是,nuget包不能获得源码调试级的支持,在分发和包的管理形式上其比其他方案都优秀 ...
- pdb断点命令_Python使用pdb更优雅的调试代码
什么是pdb 不知道大家在用Python写代码出现报错时是怎样调试的,从报错提示定位回去一步一步check每一行?如果没有IDE或者命令行写代码时又该怎样快速调试?这时如果使用pdb进行调试将会异常方 ...
- debug命令_Python 必备 debug 神器:pdb
目录 叨逼叨 使用介绍 举个简单的栗子 叨逼叨 首先,介绍一下 pdb 调试,pdb 是 python 的一个内置模块,用于命令行来调试 Python 代码.或许你会说,现在用 Pycharm 等编辑 ...
- oracle12c关闭pdb,oracle 12c pdb启动与关闭
在oracle 12c pdb数据库默认是不起来的,下面介绍一下pdb起关的一些常用命令. 默认状态: SQL> show pdbs CON_ID CON_NAME OPEN MODE REST ...
- pdb—Python调试器
pdb-Python调试器 在python 3.8文档 Python 常用指引中已经详细介绍了pdb模块,此处为引用官方文档 该模块pdb为Python程序定义了一个交互式源代码调试器.它支持在源代码 ...
- pdb python 命令_使用pdb进行Python调试(下)
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 显示表达式 与使用p和pp打印表达式类似,你可以使用命令display [expression]告诉pdb ...
- python pdb调试_使用Pdb进行Python调试
python pdb调试 Debugging applications can sometimes be an unwelcome activity. You're busy working unde ...
- oracle 18c 18.3 学习之五 unplug drop plug pdb
os: centos 7.4 db: oracle 18c(18.3) pdb 的优势之一就是 unplug.plug,本篇blog介绍下 pdb 的 unplug. 以 pdbdongg 为例,进行 ...
最新文章
- 公示 | 清华大学大数据研究中心“RONG”奖学金获奖名单
- 关于网易云音乐爬虫的api接口?
- 《利用Python》进行数据分析:Numpy基础2 创建数组
- 网易云信国际短信上线啦!
- 【Qt】Qt布局管理器
- Linux系统中df与du命令查看分区大小
- Linux下SVN安装配置全程实录(转)
- ai人工智能编程_从人工智能动态编程:Q学习
- 【解决】ERROR in xxx.js from UglifyJs
- IoT -- (八)MQTT优缺点
- Intel 64/x86_64/IA-32/x86处理器 - 通用指令(5) - 控制转移指令
- opencv 特征匹配和
- jquery mysql表格_使用jQuery设计数据表格:设计表格基类
- Ansible详解(一)——Ansible理论基础
- 【图像重建】基于matlab卷积神经网络的图像超分辨率重建【含Matlab源码 1816期】
- 用安卓手机搭建一个可用渗透测试环境/安卓手机搭建linux环境
- 数据中台数据分层架构
- VMware VCP-DCV认证课程概述
- 通过fpga实现占空比的改变
- Kivy转apk——使用打包虚拟机(亲测~)