草庐IT

c++ - 由于生成后步骤,未加载 native dll 的符号 (pdb)

我有一个用符号构建的native发布dll。有一个修改dll的构建后步骤。构建后步骤会进行一些压缩并可能附加一些数据。pdb文件仍然有效,但WinDbg和VisualStudio2008都不会在后期构建步骤后加载dll的符号。我们需要修改pdb文件或dll中的哪些位才能让WinDbg或VisualStudio在加载引用了我们的发布dll的转储时加载符号?重要的是文件大小吗?校验和或哈希?时间戳?修改转储?或者修改pdb?在发货前修改dll?(我们知道pdb是有效的,因为我们能够使用它手动获取引用已发布的dll的转储调用堆栈中地址的符号名称。这只是*ss中的每个地址的完全痛苦所有线程中的

c++ - Oracle 是否为 OCCI/OCI 提供公共(public)符号文件 (PDB)?

OTNThread:DoesOracleprovidepublicSymbolFiles(PDB)forOCCI/OCI?在Windows下(使用VisualStudio或WinDBG)调试使用OC[C]I的应用程序时如果OracleOCI/OCCI库有符号文件(PDB文件)通常会很方便。(publicsymbolfiles,正如Microsoft为所有系统库提供的一样)Oracle提供这些吗?注意:Oracle库特别欢迎这些公共(public)符号文件,因为我们确实发生了几次崩溃,其中调用堆栈位于oci/occi库的内部,而且看起来确实是(可能是优化)用于生成这些DLL的设置有效地阻

c# - 如何获取 mscorlib.ni.lib (.Net Framework 3.5) 的 PDB 文件

经过大量搜索,我仍然找不到问题的解决方案。我有一个mdmp文件。调用堆栈显示它正在使用mscorlib.ni.dll。所以要获取函数信息,我需要获取它的pdb文件。mscorlib.ni.dll的版本是2.0.50727.3655。我相信它来自.NetFramework3.5。由于mscorlib.ni.dll是由ngen.exe生成的原生优化dll,所以我需要使用ngen.execreatepdb为这个dll生成pdf。ngen.execreatepdb"C:\Windows\assembly\...\mscorlib.ni.dll""C:\SymbolCache"结果如下:我在“C

windows - 如何从 .PDB 文件创建 .MAP 文件

我想创建一个简单的.MAP文件,列出PDB文件中的地址和符号名称。我的自然倾向是寻找一个名为“pdb2map”的工具,但我得到的大部分结果似乎是指Microsoft.NET和MicrosoftWindows的调试应用程序,不幸的是,它还没有发布在“网上”。有人知道一个好的工具吗?谢谢。 最佳答案 如果您同时拥有application.exe和application.pdb文件,请将它们放在同一目录中并运行:dumpbin/mapapplication.exe>application.mapdumpbin随VisualStudio一起

c++ - 使用 CMake 安装的 PDB 文件

我正在使用CMake命令安装PDB文件,以便在我的C++应用程序的开发人员分发版中启用调试。命令如下:INSTALL(DIRECTORY${PROJECT_BINARY_DIR}/DebugDESTINATIONbinFILES_MATCHINGPATTERN*.pdb)此外,我已经设法在同一级别的“src”文件夹中安装用于构建该开发人员分发版的相关源代码,以便我的顶级分发文件夹如下所示:include\src\lib\bin\share\doc\3rdparty\etc\我怎样才能让PDB文件“知道”源在哪里(我假设这是必需的)?是否有可以实现此目的的CMake命令?什么是小例子?

windows - 如何更改年龄不匹配的 PDB 以正确匹配?

我们的夜间构建过程中断了很长时间,以至于它生成的PDB文件与相应的图像文件存在几个小时的时间差异。我已经解决了这个问题。但是,我想开始使用符号服务器,但由于必须使用这些年龄不匹配的pdb文件而不能。我通过在windbg中使用.symopt+0x40方法解决了这个问题。这意味着我必须手动组织我所有的pdb文件,并且经过多年的发布,这些文件加起来。我正在寻找一种方法来修改windbg用来标记pdb年龄的机制,并强制它与我的图像文件匹配。该实用程序ChkMatch做类似的事情,但用于pdb签名。开发人员在页面上声明“ChkMatch能够使可执行文件和PDB文件匹配,如果它们具有不同的签名但相

python - PDB:在控制台中出现异常 - 完整堆栈跟踪

在pdb控制台上,输入导致异常的语句只会产生一行堆栈跟踪,例如(Pdb)someFunc()***TypeError:__init__()takesexactly2arguments(1given)但是我想弄清楚someFunc中错误的确切来源。即在这种情况下,__init__附加到哪个类。有没有办法在Pdb中获取完整的堆栈跟踪? 最佳答案 最简单的方法是在您的代码中定义一个调用someFunc()并打印回溯的函数,然后从Pdb调用它。或者,您可以自己打印回溯。鉴于此源代码:deffoo(a):passdefbar(b):foo(b

python - 如何在不停止 python 程序和编辑代码的情况下禁用 pdb.set_trace()

我怀疑我的一个循环有问题,所以我用pdb.set_trace()设置了一个断点importpdbforiinrange(100):print("a")pdb.set_trace()print("b")在这个循环中检查了几次变量之后,我决定继续这个编程,不再中断。所以我尝试使用b命令获取中断号,但没有列出任何中断。我猜这行代码没有设置断点。但是如何在不停止程序和更改代码的情况下摆脱这个“断点”? 最佳答案 据我所知,您无法绕过set_trace,但您可以中和它,一旦调试器停止,键入:pdb.set_trace=lambda:1然后继续

python - 在 PDB 交互式 shell 中打印当前异常

所以我正在使用PDB单步执行一个脚本,它引发了一个异常,但出于某种原因,它将异常缩写为不可读的程度。我如何让它打印整个异常?我可以获得对异常的引用吗?我认为这将是一个内置命令,例如“rv”。 最佳答案 我认为,它可以帮助:try:**yourcode**exceptExceptionase:print(e) 关于python-在PDB交互式shell中打印当前异常,我们在StackOverflow上找到一个类似的问题: https://stackoverflo

python - Jupyter notebook 卡在 pdb 模式

我正在使用Jupyter(IPython)笔记本,其中pdb/ipdb运行良好,除了一个问题:如果我在pdb模式下不小心运行了我的pdb所在的同一个单元格,输出消失,整个笔记本得到卡住了,我无法再运行任何命令。我也试过中断或重启内核;不起作用。我唯一的选择是关闭笔记本电脑,然后重新启动它。还有其他人遇到过这个问题/知道解决方案吗?每次犯这个错误都必须重新启动笔记本,这让我很烦。这是问题的截图。下面我按预期处于pdb模式:如果我随后(不小心)运行我的pdb所在的同一个单元格,笔记本会在尝试运行该单元格时卡住,并且不会运行其他任何东西(如下面的单元格)。 最佳答