2

I have an application that works fine on all machine bar a single client. I went on site and took a dump file...

I have read the documentation and correctly created a .DMP using the 'Kernel Memory Dump' option. This has created a ~300MB file and I have opened this with VS2012. I have set the correct paths to both the source programs .pdb (symbol files) and the Microsoft Symbol files.

The source seems to load and put me in to the following code for my application:

namespace SqlEditor
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new SqlEditorForm(args)); // <- Stops HERE
        }
    }
}

This is looking fine so I attempt to enter the applications source further with a press of F11 and I get:

Unable to step. This operation is not supported when debugging dump files.

Now I have read many articles on this, including

http://wallaceturner.com/debugging-dump-files-created-on-another-machine

and it seems I should be able to step through this dump file as I have provided all the necessary information and the application that the dump was taken from was not obfuscated.

How can I step through and find out why the clients version of the application is not working?

Thanks for your time.


Note, I also have attempted to press the 'Continue' button. This gives:

The debugger cannot continue running the process. his operation is not supported when debugging dump files.

Thomas Weller
  • 55,411
  • 20
  • 125
  • 222
MoonKnight
  • 23,214
  • 40
  • 145
  • 277

1 Answers1

4

A dump file is the snapshot at the capture time, so there is no step in option for you.

Lex Li
  • 60,503
  • 9
  • 116
  • 147
  • Lex li : I am curious why is this not possible. I mean what is stopping Microsoft from giving us the feature that we would be able to revive a process back to the point from where the snapshot was taken. Wouldn't that be really really helpful(imagine we are on the same machine where the dump was taken and now we are only trying to revive that process) – ankur Jul 07 '16 at 22:43
  • @ankur this question is only about the dump file. If you do want to replay a process and troubleshoot, Microsoft has something called TTT. – Lex Li Jul 07 '16 at 23:39
  • I will go through TTT. But I didn't mean replay the entire process. I meant resuming it from the state where it left( or we instructed the higher level control to create the dump of that process). Just to mention that all I intend to do is create a dump because the current ram consumption of my process is say 1.2 GB and now it is waiting for a file (watcher) and more jobs are coming to run to that same machine.. So if I am well aware that the current process can be snoozed for 2 hours , so I'll dump that -> run the current job -> reload the older dump to the exact same state and then continue – ankur Jul 08 '16 at 03:08
  • @ankur you cannot resume from a dump, as it can come from a completely different machine and the runtime dependencies are not available. Don't dream of something unrealistic. TTT by far is the best approach Microsoft developed and being used extensively by its technical support guys. – Lex Li Jul 08 '16 at 07:15
  • I understand. But my requirements are a bit different, perhaps unrealistic maybe. But I'm trying. And that brought me here . but there would be some way that we could store everything about the process current state to a flat file. And when the system resources permit ,we can resume that process from that exact state. Any advice? My app is developed .net 4 C# – ankur Jul 08 '16 at 07:37
  • @ankur post your question separately and see how the SO community responds. – Lex Li Jul 08 '16 at 07:44