- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
注意:我的目标是将C#与常规MSIL一起用于CLR,以防万一,某些情况下可以使用,但在较一般的情况下不行。
现有的一些源调试支持示例
最近发布了the Sourcepack project,它允许用户重写pdb文件中的源路径以指向不同的位置。当您具有程序集的源代码,但又不想尝试将其放入与构建时完全相同的文件系统位置时,这非常有用。
http://lowleveldesign.wordpress.com/2011/08/26/sourcepack-released/
对于开源项目,使用http://www.symbolsource.org/作为使项目用户轻松获取符号和源代码的一种方法是一个好主意。
问题
但是,在很多项目中,出于法律或方便的原因,使用这种方法不太可行。同样,可能正在调试项目的人员可能相对较小或受限制。
默认情况下,项目的pdb包含指向磁盘上文件(IIRC)的指针,然后源索引可以添加将指针嵌入源位置的功能(例如,在版本控制系统中),然后使用源服务器实际获取源的指针。
目标
仅将实际源代码放入pdb中(实际上只是取消引用当前写在PDB中的指针),看起来事情可能更简单(对于某些构建,例如debug和/或仅供内部使用)。这样看来,您可以跳过整个源服务器部分(至少在理论上是这样),并消除对调试时间的依赖。是否以压缩形式存储源在很大程度上是正交的,但是第一次尝试可能不会这样做,以使其更易于为现有调试器实现。
由于PDB匹配二进制的故事已经非常好,将源放入PDB甚至比源服务器指针还要好,因为指针可能会随着时间而中断(源控制系统移动或更改为其他系统,或者(无论如何),但PDB中的实际来源是“永远的”。
这与“源服务器”支持有何不同?
(这是在Tigran的评论询问会有什么好处之后通过编辑添加的)
可以与之进行比较的“基准”场景是当今使用“正常”源服务器实例的“正常”调试经验。在那种情况下,调试引擎(AFAIK)会从PDB获取指针(通过备用流),然后使用已注册的源服务器尝试通过该指针获取源。由于给定的程序集通常将包含多个源文件,因此要么有一个包含基本位置的单个指针,要么在PDB中(或其他东西)有多个指针,但这应与本讨论正交。
对于需要隐藏/不可访问源代码的项目(大多数Microsoft产品,例如Windows,Office,Visual Studio等),则使PDB包含指针比包含实际源代码要好得多(即使它是加密)。如果没有必要的网络访问权限和权限,此类指针就毫无意义,因此,这种方法意味着您可以将PDB交付给地球上的任何人,而不必担心它们能够访问您的源(最坏的情况是,它们会瞥见您的源如何我想树被安排了)。
但是,有2个大型项目(尤其是构建项目)不存在这种“隐藏源代码”的好处。
第一个是只能由仍然有权访问源代码的人使用的版本。在您自己的计算机上完成的构建永远不会离开该计算机是一个很好的例子,因为攻击者无论如何都需要从您的文件系统读取文件以获取源,因此从一个文件(.cs)到另一个文件(.cs)进行读取。 pdb)在攻击难度/向量方面的差异相对较小。同样,已完成的构建并将其推送到测试/分阶段环境,在此环境中,访问计算机上pdb的人员等于或可以“正常”访问源的人员的一部分。
第二个是(某种程度上很明显)开源项目,该项目的源代码已经对所有人开放,因此对任何人隐藏源代码都没有好处。
请注意,这可以相对容易地扩展为以加密形式包括源(因为我们已经在谈论必须存储格式/编码数据),但是这样做的额外复杂性将使这种情况可能不太有用。不仅仅是使用“正常”源服务器。
好处?
撇开上面的描述,允许这样做的潜在好处包括(但不限于:)此刻突然出现的这些好处:
最佳答案
我已阅读此书,并希望总结一下我的理解以便清楚
Today the debugger uses the PDB to gain the disk path to a file and checksum which was compiled to create a given section of an executable. The debugger then attempts to load the file using both the local disk and available symbol server. Under this proposal we would skip the middle man by just embedding the file itself into the PDB. Eureka, no more searching for source!
关于c# - 如何将源代码嵌入到pdb中,并让调试器使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7311537/
我正在编写一个 Java 应用程序,该应用程序检查网页的源代码,并在满足源代码中的条件时在我的默认浏览器中向我显示该网页。我通过以下方式获取源代码: String source = getUrlSou
数周以来,我一直在为 Android 上的蓝牙项目而苦苦挣扎。有谁知道我可以去哪里查看 Google 用于使其蓝牙配对和连接逻辑正常工作的实际代码? 我浏览了所有的文档、BluetoothChat 应
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
Android 源代码有多个目录,其中包含针对不同设备的代码。此外,在特定目录中,存在显示不同分支和标签的路径。举个例子,在“android/platform/external/iptables”目录
在哪里可以找到 SQLMembershipProvider (.NET2.0) 的源代码? 是可用的么? 最佳答案 源代码已经发布。 See ScottGu's blog for further de
我只想知道如何下载特定版本的 Android 源代码。我已经尝试过以下命令 repo init -u https://android.googlesource.com/platform/manifes
我想看看OpenCL框架是如何实现的。我发现的只是已经编译好的可供下载的库。 当然,OpenCL 可以有许多不同的实现,但我想看看其中的一个来了解它是如何完成的。 为了确保我自己清楚,OpenCL 框
latex 源代码列表应该是什么样子才能产生像已知书籍中那样的输出,例如 Spring 框架的输出?我尝试过使用 latex 列表包,但无法生成看起来像下面一样好的东西。因此,我主要对生成类似以下示例
PHP 是用 C 语言编写的吗?我在哪里可以在线找到 PHP 源代码而无需下载全部内容? 最佳答案 PHP 函数是用 C 编写的 - 您可以在 lxr.php.net 找到可浏览的源代码. 例如:ht
我正在使用Elasticsearch OSS的官方Docker镜像(docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.4),似乎完全无法使用s
我试图在Cython中同时编译C和C++源代码。这是我当前的设置: -setup.py from distutils.core import setup from Cython.Build impor
好吧,事情是这样的:你们所有人可能都在想同样的事情:您可以使用 driver.getPageSource(); 这部分是正确的。唯一的问题是源代码以一种相当奇怪的方式编译,所有代码都在其中 \&quo
由于 TwoLineListItem 自 API 17 起已被弃用,因此我已采取措施将其替换为自定义 XML 和 ViewHolder。但是,我真的希望我的应用程序看起来与使用 TwoLineList
要从 HttpURLConnection 获取 InputStream,我们的代码如下 urlConnection.getInputStream(); 如果InputStream是一个Abstract
我刚刚开始学习更多关于 C/C++ 的知识,我正在使用 Visual Studio 2013 来管理代码。 我正在使用 Tobii EyeX 眼睛注视系统的项目要求我能够稍微调整此代码,但是我不明白如
我在按钮上有一个IBAction,其中包含以下代码,我尝试使用它来检索 UIWebView 的源代码: - (IBAction)loadInAWebView:(id)sender { [self
我正在 asp.net 中创建一个网站,我只是想知道有什么方法可以使用 JavaScript 从图像生成调色板吗?类似于 1) http://www.cssdrive.com/imagepalette
有人可以分享 WinKill() from AutoIt 的源代码吗? ? 我想知道它如何处理消息(是/否/取消)以确保它得到正确处理。我想用它来清理桌面上的意外弹出窗口。 最佳答案 正如我们在下面的
我的问题与 Opencv 的源代码有关。在我看来不同的平台the Opencv website提供不同的代码结构。我只是想知道是否有可能为所有不同的平台提供一个源代码。使用相同的源代码,我可以针对不同
这个问题在这里已经有了答案: Convert Python program to C/C++ code? [closed] (8 个答案) 关闭 3 年前。 我一直在努力寻找一种方法将 .py 源文
我是一名优秀的程序员,十分优秀!