标签: crash-dumps

如何在我的Linux C++程序中启用核心转储

我的程序是用C++编写的.用gcc编译,使用-g3 -O0 -ggdb标志.当它崩溃时,我想打开它的核心转储.它是创建核心转储文件,还是我需要在程序本身或执行它的计算机上执行某些操作以启用核心转储?创建此文件的位置,名称是什么?

c++ linux crash-dumps

79
推荐指数
3
解决办法
10万
查看次数

如何使用转储文件诊断内存泄漏?

我有一个.NET服务,其正常的私有工作集大约为80 MB.在最近的负载测试期间,进程达到3.5 GB内存使用量,导致整个机器的物理内存不足(使用4 GB中的3.9),并且在负载测试停止后很长时间内内存未释放.使用任务管理器,我获取了该进程的转储文件并在Visual Studio 2010 SP1中打开它,我可以开始调试它.

我如何诊断内存问题?我有dotTrace Memory 3.x,它是否支持转储文件的内存分析?如果没有,Visual Studio 2010 Premium的内存分析功能是否有帮助(我目前有专业版)?WinDbg可以帮忙吗?

更新:新的Visual Studio 2013 Ultimate现在可以使用转储文件本机诊断内存问题.有关详细信息,请参阅此博客文章.

.net memory-leaks crash-dumps visual-studio-2010 memory-profiling

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

在Visual Studio中调试转储文件

我使用的是Visual Studio 2010专业版和Windows Vista.

首先,我有这个代码.如你所见,它会使程序崩溃!

using System;

namespace Crash
{
    class Program
    {
        static void Main(string[] args)
        {
            string a = null;

            if (a.Length == 12)
            {
                // ^^ Crash
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该程序将在if语句中崩溃.现在,我想知道它在if语句中崩溃了.

如果我从Visual Studio"开始没有调试",Crash.exe崩溃.它使用1,356kb的内存.我得到了Close Program/Debug的Vista选项.如果我选择Debug,我可以打开一个新的Visual Studio实例,它指向if语句的NullReferenceException.这很好.

现在让我假设它在另一台计算机上崩溃了,我让他们通过任务管理器给我一个转储文件.它是54,567kb.为什么这么大!这是巨大的!无论如何,我对此不太感兴趣(略)

如果我用Windbg打开那个转储,我对未经训练的眼睛几乎没有用处:

Microsoft (R) Windows Debugger Version 6.12.0002.633 X86
Copyright (c) Microsoft Corporation. All rights reserved.


Loading Dump File [C:\Users\Richard\Desktop\Crash.DMP]
User Mini Dump File with Full Memory: Only application data is available

Symbol search path is: SRV*C:\SYMBOLS*http://msdl.microsoft.com/download/symbols
Executable search path is: …
Run Code Online (Sandbox Code Playgroud)

c# debugging crash-dumps visual-studio-2010

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

minidump与fulldump?

我刚刚开始查看转储文件,以帮助我分析工作中生产环境中w3wp进程的崩溃...

我想知道,minidump和fulldump文件之间有什么区别?

.net minidump dump crash-dumps

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

42
推荐指数
3
解决办法
6万
查看次数

自动生成.NET崩溃转储

我知道如何使用ADPlus或DebugDiag生成Crash Dump文件,但我想知道是否有办法在客户的计算机上执行此操作而不安装这些工具...具体来说,我希望能够配置我的应用程序(例如,使用注册表值)在严重故障的情况下生成崩溃转储.更具体地说,我需要能够从C#应用程序执行此操作,但如果有必要,我不介意P/Invoke.谢谢!

.net c# crash-dumps

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

在iOS 8设备上查找崩溃日志

曾经可以通过"设置"应用访问崩溃日志.我在iOS 8中找不到.那去哪了?它现在还没有消失.

crash-dumps ios8

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

更改核心转储的位置

我想更改核心转储文件的默认位置,以便每次生成核心转储时,它都会转到该目录.此外,是否可以通过此位置中崩溃文件的名称保存转储文件?

linux coredump recovery crash-dumps

36
推荐指数
2
解决办法
9万
查看次数

如何使用WinDBG列出所有托管线程的调用堆栈?

我有一个托管应用程序创建的转储.我正在使用SOS/SOSEX扩展来简化我的转储分析.我想像~*kb使用本机应用程序一样列出所有托管线程的调用堆栈.我们怎么做?

.net c# windbg crash-dumps

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

Hows会阻止密码和其他敏感信息出现在ASP.NET转储中吗?

如何防止在IIS/ASP.NET转储文件中提交和接收ASP.NET网页的密码和其他敏感数据?

重现步骤

  1. 使用Visual Studio 2010,创建ASP.NET MVC 3 Intranet应用程序.
  2. 将其配置为使用IIS 7.5.
  3. 启动它并注册一个帐户(比如bob123作为用户,Pa $$ w0Rd作为密码.我假设创建了SQL Express数据库并且网站功能完备.
  4. 使用任务管理器,右键单击w3wp进程并创建转储.
  5. 在能够以十六进制显示其内容的编辑器中打开转储,例如SlickEdit.
  6. 在十六进制转储中搜索"Pa $$ 0Rd"和"Pa%24%24w0Rd".您应该能够找到以ASCII,Unicode或编码形式存储的多个副本.

请注意,使用HTTPS无关紧要,因为它只会加密通信.ASP.NET将数据存储在内存或磁盘中.

问题

通用的智慧是加密敏感数据而不是将其存储在清晰的数据中.但是,员工可能会收到IIS/ASP.NET应用程序的转储并发现用户的密码和其他机密数据,因为此信息既未加密,也未在使用后清除ASP.NET使用的内存.

这使他们处于危险之中,因为他们可以访问它.有时会与合作伙伴(例如Microsoft)共享转储,以帮助他们诊断代码中的问题.它是在一个应用程序中诊断一些非常复杂的问题的必要部分.

我看到的东西

  1. 将SecureString用于密码和其他敏感数据.但是,ASP.NET成员资格提供程序以及其他框架(如WCF)通常接受密码作为System.String,这意味着这些副本仍将在转储中.
  2. 看看框架中是否有任何东西在不再使用时清除System.String的副本.我找不到任何东西.
  3. 调查一旦IIS完成后,是否可以将用于请求和响应的内存清零,但我无法找到任何内容.
  4. 我调查了一个可以加密IIS接收的文件(作为HttpPostFile),以便它们不会以明文形式存储.我们可能会收到极其机密的文档,并且每一步都会在服务器上加密和保护它们.但是,有人可以从IIS转储中清除它们.

我希望的是告诉IIS/ASP.NET特定请求/响应包含敏感数据,并且IIS/ASP.NET将在使用它时清除内存.

asp.net security crash-dumps iis-7.5

26
推荐指数
1
解决办法
1382
查看次数