不在堆栈跟踪中显示构建机的文件路径
我目前正在开发一个C#应用程序,该应用程序已有自己的记录.当抛出异常时,将异常保存到列表中,用户可以通过列表视图查看. 当用户单击列表视图中的异常时,在文本框中显示了异常的堆栈跟踪.但是,即使我在远程计算机上执行程序,堆栈跟踪也会从编译应用程序的计算机上显示到原始源文件的文件路径. 例如: at C:\Folder1\Folder2\Class1.cs:81 at C:\Folder1\Folder2\Class2.cs:65 at C:\Folder1\Folder1\Class3.cs:21 仅显示没有文件夹的源文件会很好... 如何改变此行为? 有什么本机解决方案吗?还是我只需进行一些字符串操作? 解决方案 您可能拥有带有已安装应用程序的.pdb文件.没有.pdb文件,它不应显示文件位置. 看看 Windows服务中的异常堆栈跟踪 and 在没有PDB的堆栈跟踪中包括行号? 您无法获得线路的堆栈跟踪 直接来自您的应用程序的数字
0 2024-04-13
编程技术问答社区
使用nuget & Symbols服务器
我一定做错了. 我正在使用VS2012,C#.我正在使用Nuget来管理我的软件包.以前,我本人总是创建一个"外部参考"目录和托管软件包.我决定现在遵循新的包装管理方式. 无论如何,Nuget正在享受待遇.我已经设置了设置,以便软件包不包含在SVN(代码存储库)中,并且如果需要,丢失的软件包就会下载.所有工作,适用于团队中的所有开发人员以及我们团队城市盒子的所有作品. 问题是我想调试这些软件包之一(即进入软件包源的步骤)时出现的.我已经设置了vs2012的符号源vs2012,按照此 link .但是,当我运行解决方案并想介入软件包代码时,VS2012给了我空白的外观,并说找不到符号.在提琴手中,我可以看到一堆404s. 我期望我从Nuget中引用的包装的符号将下载,然后允许我介入并进行调试.还是我必须手动下载源,并指向VS2012 - 就像我在执行手动软件包管理时以前这样做吗? 我有意义吗? 解决方案 这取决于构建所述软件包的开发人员,也就是说,并非
0 2024-04-12
编程技术问答社区
C#和ASP.NET MVC:在视图中使用#if指令
我使用了一个有条件的汇编符号,我正在使用"释放",这是我在Visual Studio中项目属性中指出的.我希望在定义释放符号时将一些特定的CS应用于元素,而我试图从视图中做到这一点,但它似乎并没有起作用. 我的视图代码看起来像这样(用于演示目的有点缩短): Banner text here Banner text here 使用此代码,并使用" else"代码运行" else"代码,并且我正在与Debugbanner类获得DIV.因此,似乎并没有认为发布已定义.值得注意的是,我在.cs文件中的实际C#代码正在识别发布并运行正确的代码. 的唯一视图才是我的问题. 有人对此有任何洞察力吗?任何帮助,将不胜感激.谢谢. 澄清:我应该提
0 2024-04-11
编程技术问答社区
如何在Visual Studio 2017中调试.NET 4.6框架源代码?
这是我尝试的: 在Visual Studio 2017中制作了一个新的控制台应用程序(.NET框架). 添加以下代码: static void Main(string[] args) { new Dictionary().TryGetValue(3, out int x); //I want to step into TryGetValue() (this is just an example) } 配置了此处列出的设置: https://blogs.msdn.microsoft.com/sburke/sburke/2008/01/16/configuring-configuring-visual-studio-studio-to-debug-net-net-framework-net-framework-source-source-source-source-code/ 已确认的符号已加载在模块窗口中: mscorlib.d
0 2024-04-11
编程技术问答社区
我应该把带有调试信息的发布版编译为 "完整 "还是 "仅有pdb"?
在C#项目的Visual Studio中,如果您转到Project Properties> build> Advanced>调试信息,则有三个选项:none,full或pdb-only. 哪种设置最适合发布? 那么,full和pdb-only? 之间有什么区别 如果我使用full会有性能后果吗?如果我使用pdb-only会更难调试生产问题吗? 解决方案 我将使用pdb-only构建.您将无法将调试器附加到发布的产品上,但是如果您获得了崩溃转储,则可以使用Visual Studio或如果您使用full而不是pdb-only,则您将获得相同的好处,但可执行文件可以直接连接到调试器.考虑到您的产品和客户,您需要确定这是否合理. 请确保将PDB文件保存在某个地方,以便在崩溃报告进来时可以引用它们.如果您可以设置符号服务器存储那些调试符号,好多了. 如果您选择使用none构建,则在该领域发生崩溃时,您将没有追索权.您将无法对撞车事件进行任何事后检查,这可能会严重
0 2024-04-11
编程技术问答社区
试图从转储文件中调试Windows Store应用程序
让我从主要问题开始,然后在下面添加一些细节和历史记录.我已经进行了研究,但似乎无法将这些碎片放在一起.请在投票之前要求澄清. 我的问题: 为什么我的Windows Store应用程序在我的Win 8.1 64位以及我的Win 8.1 32位(ATOM)平板电脑上启动并在本地正确运行,但其他用户却没有启动? 当我从Windows Store认证失败中获取转储文件时,如何才能获得调试符号,以便我可以看到更多问题? 当我以"发行"模式构建时,它实际上是否将符号放入.pdb文件中?它会索引符号吗? 这是历史: 我开发了一个小游戏作为通用应用程序,赢手机和Windows Store. Win电话版在商店中,下载并正常工作. Windows Store版本有问题. 它在我的机器上运行,赢得8.1 64位.它在我的平板电脑上运行,Win 8.1 Atom,我通过Visual Studio内部的远程调试安装.它在我的盒子上通过了应用程序认证.但是,当我将软件包提交
0 2024-04-11
编程技术问答社区
#if DEBUG vs. Conditional("DEBUG")
最好使用的以及为什么在一个大型项目上使用: #if DEBUG public void SetPrivateValue(int value) { ... } #endif 或 [System.Diagnostics.Conditional("DEBUG")] public void SetPrivateValue(int value) { ... } 解决方案 这确实取决于您要做什么: #if DEBUG:此处的代码甚至在发行时都不会到达IL. [Conditional("DEBUG")]:此代码将到达IL,但是,除非汇编呼叫者时设置调试,否则将省略对该方法的调用. 我个人会根据情况使用两者: 有条件("调试")示例:我使用此示例,这样我就不必在发布期间返回并编辑代码,但是在调试期间,我想确保我没有t做任何错别字.此函数在尝试在InotifyPropertychanged的内容中使用它时是否正确键入属性名称. [Condit
0 2024-04-10
编程技术问答社区
如何用C语言的Makefile生成Debug符号?[Linux]
我正在尝试使用GDB和KDEVEEP来在Knoppix VM下调试控制台应用程序. kdevelop和gdb不要在我的断点上打破.我怀疑这是因为他们没有调试符号. 如果我正确,我需要如何更改makefile才能创建这些零件.也许问题在其他地方? 问候, Ariel 解决方案 在发送给编译器和链接器的标志中包括-g.此的默认变量分别为CFLAGS和LDFLAGS. 第二步:排除-s从旗帜(-s表示 strip ) 其他解决方案 如果您能够看到源并设置断点,则可能已经建立了调试符号.但是,通常的序列是: gcc -g -o (outputname) (source files...) gdb outputname 提供更多有关您正在做的事情以及您看到的消息的细节,我们可以更具体. 其他解决方案 完整的示例将是: CFLAGS =-g all: program.o gcc -o program program.o CFLA
0 2024-04-08
编程技术问答社区
我怎样才能知道ELF对象文件中的调试信息是什么类型?
我有一个精灵对象文件.我想知道它包含哪种类型的调试信息. 它是使用PPC体系结构的Diab编译器(C源)编译的.我很确定它是由调试符号构建的. 我尝试使用dwarfdump提取调试信息,但我不起作用,所以我想调试信息不​​是类型的矮人. $ dwarfdump file.elf No DWARF information present in file.elf 使用objdump显示调试信息空白. $ objdump -g file.elf file.elf: file format elf32-powerpc 即使ELF文件的部分称为.debug_sfnames,.debug_srcinfo和.debug.srcinfo,该精灵文件可能不包含调试信息?还是调试信息以objdump无法处理的格式存储? 解决方案 您可能应该使用 NM实用程序应显示出在 对象文件,可执行文件或文件命名的对象文件库.如果 没有符号信息可用于有效输入文件,NM 公用事
0 2024-04-08
编程技术问答社区
使用GCC在共享库中启用调试符号
我正在使用gcc创建共享库,并怀疑共享库中可能会有一些内存泄漏.要调试,我需要在创建共享库时启用调试符号. 要构建,我正在使用gcc -g ...(-g是用于启用调试信息) 但是,-g和没有-g的库(*.so文件)的大小并没有更改. 此外,我没有从VALGRIND等工具中获得任何有用的信息. 任何人都可以指我错误吗? 解决方案 您需要使用-g进行所有步骤(编译源文件和链接).
0 2024-04-06
编程技术问答社区
我怎样才能知道一个库是用-g编译的?
我在X86 Linux上有一些编译的库,我想快速确定它们是否是用调试符号编译的. 解决方案 如果您在Linux上运行,请使用objdump --debugging.库中的每个对象文件应该有一个条目.对于无需调试符号的对象文件,您会看到类似的内容: objdump --debugging libvoidincr.a In archive libvoidincr.a: voidincr.o: file format elf64-x86-64 如果有调试符号,输出将是更多的详细信息. 其他解决方案 建议的命令 objdump --debugging libinspected.a objdump --debugging libinspected.so 至少在Ubuntu/Linaro 4.5.2: 上给我始终相同的结果 libinspected.a: file format elf64-x86-64 libinspected.so:
2 2024-04-05
编程技术问答社区
Visual Studio:发布版构建中的调试信息
我很想在发布给客户的发行版中包含调试信息.据我所知,唯一的一侧是二进制文件大小增加了25%.优点是我可以立即获得可用的崩溃转储,更容易分析. 我愿意忍受25%的增长.我还有其他缺点吗? 这是一个C项目,我要做的就是链接/调试/生成调试信息 解决方案 可执行文件的大小应少于25%. 我实际上对它的增加感到有些惊讶,但是一些快速测试表明,至少一个大型示例项目(SCUMMVM)将.EXE从10,205,184字节增加到10,996,224字节,仅通过添加/DEBUG选项,到链路步骤(大约增加了8%). /DEBUG使用IDE中的"Linker | Debugging | Generate Debug Info"选项指定.请注意,此设置应该对编译器生成的优化没有影响. 我知道将.pdb文件的指针放入可执行文件中,但这并不多.我进行了一些实验,发现启用/OPT:REF链接器选项将大小差异更改为10,205,184 vs. 10,205,696.因此,非/DEBUG构建的尺
0 2024-04-04
编程技术问答社区
Visual Studio:发布版构建中的调试信息
我很想在发布给客户的发行版中包含调试信息.据我所知,唯一的一侧是二进制文件大小增加了25%.优点是我可以立即获得可用的崩溃转储,更容易分析. 我愿意忍受25%的增长.我还有其他缺点吗? 这是一个C项目,我要做的就是链接/调试/生成调试信息 解决方案 可执行文件的大小应少于25%. 我实际上对它的增加感到有些惊讶,但是一些快速测试表明,至少一个大型示例项目(SCUMMVM)将.EXE从10,205,184字节增加到10,996,224字节,仅通过添加/DEBUG选项,到链路步骤(大约增加了8%). /DEBUG使用IDE中的"Linker | Debugging | Generate Debug Info"选项指定.请注意,此设置应该对编译器生成的优化没有影响. 我知道将.pdb文件的指针放入可执行文件中,但这并不多.我进行了一些实验,发现启用/OPT:REF链接器选项将大小差异更改为10,205,184 vs. 10,205,696.因此,非/DEBUG构建的尺
0 2024-04-04
编程技术问答社区
我应该把带有调试信息的发布版编译为 "完整 "还是 "仅有pdb"?
在C#项目的Visual Studio中,如果您转到Project Properties> build> Advanced>调试信息,则有三个选项:none,full或pdb-only. 哪种设置最适合发布? 那么,full和pdb-only? 之间有什么区别 如果我使用full会有性能后果吗?如果我使用pdb-only会更难调试生产问题吗? 解决方案 我将使用pdb-only构建.您将无法将调试器附加到发布的产品上,但是如果您获得了崩溃转储,则可以使用Visual Studio或如果您使用full而不是pdb-only,则您将获得相同的好处,但可执行文件可以直接连接到调试器.考虑到您的产品和客户,您需要确定这是否合理. 请确保将PDB文件保存在某个地方,以便在崩溃报告进来时可以引用它们.如果您可以设置符号服务器存储那些调试符号,好多了. 如果您选择使用none构建,则在该领域发生崩溃时,您将没有追索权.您将无法对撞车事件进行任何事后检查,这可能会严重
0 2024-04-04
编程技术问答社区
通过Powershell或BATCH序列化执行symstore
我们正在努力将步骤集成到我们的连续集成(CI)服务器(CruiseControl.net)中.我们要注册从构建过程生成的调试符号*.pdb中的Microsoft符号服务器.正如Microsoft实施的那样,符号服务器是目录结构Visual Studio用于查找C ++/C#operutables的*.pdb调试符号. Microsoft提供了一个命令symstore,该命令在一个目录中采用调试符号并适当填充中央符号商店目录. 麻烦是symstore明确指出并不安全地运行. 我们可以尝试通过批处理或powershell脚本同时执行symstore命令的哪些方法或策略? 我们的方法很灵活,但是由于我们在Windows平台上运行,因此批处理和PowerShell是首选的解决方案. 澄清: 对于我们的用例,symstore需要从两个不同的CI服务器中运行,这些服务器将在公共网络驱动器上保存符号. 资源: Symstore :: 解决方案 您可以将锁定文
0 2024-03-29
编程技术问答社区
在Azure Pipelines PublishSymbols任务中,如何指定多种搜索模式?
我们的管道中有以下PublishSymbols任务,并且它正常工作. - task: PublishSymbols@2 inputs: symbolsFolder: $(Pipeline.Workspace)/s/Server searchPattern: "**/*.pdb" indexSources: true publishSymbols: true symbolServerType: TeamServices symbolsProduct: "ACM" symbolsVersion: $(major).$(minor).$(revision) symbolsArtifactName: "Symbols_ACM.$(major).$(minor).$(revision)_$(buildConfiguration)" enabled: true condition: eq(variables['doPublishSymbols'], 'tru
2 2024-03-25
编程技术问答社区
与Azure DevOps符号服务器的源链接
Internet上有几种有记录的方式,有关如何使用符号源文件和源链接到Nuget软件包内的调试源链接,但老实说,很难理解对我的好方法. 我们有一个Azure Devops服务器,我们在该服务器上生成Nuget软件包,同时使用构建管道中的任务以此处描述 我的项目'还对Microsoft.SourceLink.Vsts.Git和.csproj file 中的该代码也有参考. true true 我已经阅读了几篇博客文章,但是我最信任的最新消息的来源当然是官方源链接git存储库. readme.md文件说 通常不再建议使用.nupkg中的pdb 我同意这一点,这就是为什么我要使用符号服务器,而不是在Nuget软件包中包含.pdb文件.因此,请不要将我的问题标记为 ,因为接受的
6 2024-03-25
编程技术问答社区
为GDB手动创建调试符号
介绍.对于我的编译器课程,我必须将某些语言翻译成汇编器.现在,我的代码有一个segfault,我很难调试它.具有观察变量的能力将大大简化过程,但是最终的ASM代码只有寄存器及其衍生物. 问题.如何手动为GDB创建调试符号?我相信我可以传播所有必要的信息.会创建单独的文件还是它是ASM的一部分?在前一种情况下,如何使GDB知道该文件? 某些手册的链接就足够了.我已经搜索了一个,只能找到" GCC -G"和有关分别生成符号文件的一些问题. 解决方案 GCC告诉发生错误的最后一个标签.但是它没有给出行号或堆栈跟踪. 引入JAV调试 我在CPP中也有类似的实用程序,称为Rep(),通过variadic模板最多需要10个参数. NASM宏不支持变异宏;但它支持基于参数数的过载宏. asm_io.inc 保罗·卡特 PC组装语言 2002年12月12日 我添加了调试宏 extern read_int, print_int, print_strin
0 2024-03-17
编程技术问答社区
GNU汇编程序中的本地标签;gdb打印回溯,好像标签是函数一样
两个示例代码;首先,一些C ++代码调用汇编: /* test1.cc */ #include extern "C" void blah(); extern "C" void stuff() { printf( "This is a test\n" ); } int main( int argc, char *argv[] ) { blah(); return 0; } ...然后组装: .file "test2.s" .text .globl blah, stuff .type blah,@function .type stuff,@function .align 16 blah: /* normal function preamble */ pushl %ebp movl %esp, %ebp label1: call stuff leave retn 用: 构建 as -g --32 tes
2 2024-03-16
编程技术问答社区
使用Symbolserver对ASP.NET MVC4的夜间构建进行调试
我使用此描述来为我的项目纳入ASP.NET MVC http://blogs.msdn.com/b/henrikn/henrikn/archive/2012/06/01/ususe-nightly-asp-netly-asp-net-web-net-web-stack-nuget-nuget-packages -with-vs-2012-rc.aspx 它从nuget中拉出了组件,我可以运行该项目. 我现在尝试调试从MS符号服务器提取的PDB.这实际上是重点:我不知道这些符号是否真的位于服务器上.我要么做错了什么,要么没有符号. 这是我的调试设置: 这些是我的符号服务器 这是我尝试进入System.web.mvc.dll中的方法时看到的 这些是加载的模块: 我在9月3日下载了夜间构建.我缺少什么吗? 解决方案 我经历了完全相同的问题.您需要使用Myget上托管的符号.请参阅: http://blogs.msdn.com/b/w
0 2024-03-15
编程技术问答社区