标签: debug-symbols

#if DEBUG vs.条件("DEBUG")

在大型项目中使用哪个更好,为什么更好:

#if DEBUG
    public void SetPrivateValue(int value)
    { ... }
#endif
Run Code Online (Sandbox Code Playgroud)

要么

[System.Diagnostics.Conditional("DEBUG")]
public void SetPrivateValue(int value)
{ ... }
Run Code Online (Sandbox Code Playgroud)

c# debugging preprocessor debug-symbols

416
推荐指数
6
解决办法
28万
查看次数

发布生成.pdb文件,为什么?

为什么Visual Studio 2005 .pdb在发布时编译时会生成文件?我不会调试发布版本,为什么它们会生成?

.net debugging debug-symbols visual-studio pdb-files

251
推荐指数
4
解决办法
10万
查看次数

Visual Studio加载符号

我现在正在研究一个ColdFusion项目,至少Visual Studio开始对我来说很奇怪.

我观察到,当我开始调试时,它构建了项目,它开始部署,部署完成,它开始为我的项目加载符号.

但它很慢,我不知道为什么它开始这一步.我可以做些什么?

这个符号加载步骤是否必要?我该如何禁用它?

在工具 - >选项 - >调试 - >符号对话框中,没有添加符号文件(.pdb)位置.我在下面的字段中指出了我项目的调试目录,并选中了"仅当符号为......时才搜索上面的目录"复选框.如何设置此对话框以关闭符号加载?

我查看了模块窗口中加载了哪些符号,但它对我没有任何说明.问题是什么?

在此输入图像描述

debugging debug-symbols visual-studio

162
推荐指数
8
解决办法
16万
查看次数

Xcode 4.2 debug不符号堆栈调用

我在iOS 5模拟器/设备中调试Xcode 4.2时遇到问题.正如预期的那样,以下代码崩溃:

NSArray *arr=[NSArray array];
[arr objectAtIndex:100];
Run Code Online (Sandbox Code Playgroud)

在iOS 4中,我获得了十六进制数的有用堆栈跟踪.但是在iOS 5中,它只是给了我:

*** First throw call stack:
(0x16b4052 0x1845d0a 0x16a0674 0x294c 0x6f89d6 0x6f98a6 0x708743 0x7091f8 0x7fcaa9 0x2257fa9 0x16881c5 0x15ed022 0x15eb90a 0x15eadb4 0x15eaccb 0x6f02a7 0x6faa93 0x2889 0x2805)
Run Code Online (Sandbox Code Playgroud)

谢谢.

xcode debug-symbols ios

140
推荐指数
8
解决办法
4万
查看次数

我应该使用调试信息编译发布版本为"full"还是"pdb-only"?

在Visual Studio 2010 for C#项目中,如果转到项目属性>构建>高级>调试信息,则有三个选项:none,full或pdb-only.根据这个问题的答案,我相信我理解full和pdb之间的一些区别.但是,哪个更适合发布版本?如果我使用"完整"会有性能影响吗?如果我使用"pdb-only",那么调试生产问题会更难吗?

"full"和"pdbonly"有什么区别?https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/debug-compiler-option

c# debugging build debug-symbols visual-studio

110
推荐指数
4
解决办法
4万
查看次数

如何从Delphi程序或编译器生成的调试信息中提取局部变量信息(地址和类型)?

我的目标是:

  • 给定Delphi编译的32位或64位Windows程序中的挂起线程,以便遍历堆栈(可行)
  • 给定堆栈条目,枚举每个方法中的局部变量及其值.也就是说,至少找到它们的地址和类型(integer32/64/signed/unsigned,string,float,record,class ...),其组合可用于查找它们的值.

第一个很好,这是这个问题的第二个问题.在高级别,如何在Delphi中给出堆栈条目枚举局部变量?


在较低的水平,这是我一直在调查:

RTTI:没有列出有关方法的这类信息.这不是我实际上认为是一个现实的选择,但无论如何列在这里.

调试信息:加载为调试版本生成的调试信息.

  • 映射文件:即使是详细的映射文件(文本格式文件!打开并查看)也不包含本地变量信息.它基本上是地址列表和源文件行号.非常适合文件和行相关的地址,例如装订线中的蓝点; 不是更好的更详细的信息
  • 远程调试信息(RSM文件) - 没有关于其内容或格式的已知信息.
  • TD32/TDS文件:我目前的研究方向.它们包含许多其他信息中的全局和局部符号.

我遇到的问题是:

  • 没有TD32文件格式的文档(我可以找到.)
  • 我对它们的大部分知识来自使用它们的Jedi JCL代码(JclTD32.pas),我不确定如何使用该代码,或者那里的结构是否足以显示本地变量.我很确定它会处理全局符号,但我对本地问题非常不确定.定义了各种各样的常量,没有格式的文档,读取它们的含义,我只是猜测.但是,这些常量和它们的名称必须来自某个地方.
  • 我可以找到使用TDS信息的源不加载或处理本地符号.

如果这是正确的方法,那么这个问题变成'是否有TDS/TD32文件格式的文档,是否有任何加载局部变量的代码示例?'

代码示例不是必需的,但可能非常有用,即使它非常小.

delphi stack local-variables debug-symbols

105
推荐指数
1
解决办法
1616
查看次数

如何判断库是否使用-g编译?

我在x86 Linux上有一些编译库,我想快速确定它们是否使用调试符号进行编译.

c debugging gdb debug-symbols

95
推荐指数
7
解决办法
5万
查看次数

在生产环境中部署调试符号(pdb文件)的风险是什么?

我有一个记录异常条带跟踪的应用程序,我希望这些堆栈跟踪在生产中部署时包含文件名和行号.我想出了如何使用程序集部署调试符号,但在研究问题的过程中我遇到了这个问题,这意味着在生产环境中包含pdb文件并不是一个好主意.对接受的答案的评论说:"......调试信息可以泄露敏感数据并成为攻击媒介.取决于你的应用程序是什么."

那么可能会暴露哪种敏感数据呢?如何使用调试符号来破坏应用程序?我对技术细节很好奇,但我真正想要的是一种评估任何给定应用程序和生产环境中包含调试符号的风险的实用方法.换句话说:可能发生的最坏情况是什么?

编辑:后续问题/澄清

因此,基于目前为止每个人的答案,似乎这个问题可以简化为.NET应用程序.这篇来自John Robbins的博客链接在迈克尔·马多克斯的答案中,有点向我跳了出来:

.NET PDB仅包含两条信息,源文件名及其行和本地变量名.所有其他信息都已包含在.NET元数据中,因此无需在PDB文件中复制相同的信息.

对我来说,这重申了其他人对Reflector所说的话,其含义是真正的问题是访问程序集.一旦确定了,关于PDB的唯一决定是你是否关心暴露文件名,行号和本地变量名(假设你没有向最终用户展示堆栈跟踪).或者我过度简化了这个?

.net security production debug-symbols

76
推荐指数
3
解决办法
2万
查看次数

如何使用objdump反汇编一个函数?

我的系统上安装了二进制文件,并希望查看给定函数的反汇编.优选使用objdump,但其他解决方案也是可以接受的.

这些问题我已经了解到,如果我只知道边界地址,我可能能够反汇编部分代码.从这个答案我已经学会了如何将我的拆分调试符号转换回单个文件.

但即使在单个文件上运行,甚至反汇编所有代码(即没有启动或停止地址,但只是简单的-d参数objdump),我仍然没有在任何地方看到该符号.这是有道理的,因为有问题的函数是静态的,所以它不会被导出.然而,valgrind将报告函数名称,因此它必须存储在某处.

查看调试部分的详细信息,我找到了本.debug_str节中提到的名称,但我不知道可以将其转换为地址范围的工具.

elf debug-symbols objdump disassembly dwarf

71
推荐指数
5
解决办法
5万
查看次数

阻止Visual Studio尝试加载特定DLL的符号

我将Visual Studio 2005设置为使用Microsoft的符号服务器.我还安装了UltraMon,它为每个进程注入一个钩子DLL.每当我开始调试我的MFC应用程序时,Visual Studio会说:

"Loading symbols for C:\Program Files\UltraMon\RTSUltraMonHookX32.dll..."
Run Code Online (Sandbox Code Playgroud)

从眨眼间到几十秒钟.它永远不会找到那些符号......我可以告诉它不要去寻找它吗?

(我尝试创建一个空RTSUltraMonHookX32.pdb文件,但Visual Studio发现它不好并继续查找.)

debugging debug-symbols visual-studio

61
推荐指数
4
解决办法
6万
查看次数