How to get crash dump in Windows 8.1 without using WinDbg - windows-8.1

I have a user who is running one of my apps, and he is seeing the app crash. How can I get a crash dump from his computer without asking him to use WinDbg?
I have read other questions, and this was easy to do in Windows XP using Dr. Watson, but it seems that option is not available in Windows 8.1 anymore.
Other answer points to c:\Users\[user]\AppData\Local\Microsoft\Windows\WER\ReportArchive directory, but I only see WER files there.
Any idea how to get crash dumps?
Thanks.

I wrote a program to trap WER crash dumps. I was able to use the keys mentioned in this article to trap the dump file locally. The only subtle requirement was that the program had to run with administrator rights. If you follow this methodology, make sure you run the program again to disable trapping crash reports because changing those keys could affect all future crash dumps for other applications.

ProcDump from SysInternals.
Register as the Just-in-Time (AeDebug) debugger. Makes full dumps in c:\dumps.
C:\>procdump -ma -i c:\dumps

Related

How to solve "File is in use" Windows 10 error when the file is actually not in use

I develop software using Visual Studio 2017 on Windows 10 Home with the latest updates. When my application throws an exception, the executable according to Windows remains open by itself. When I (or Visual Studio) try to delete (overwrite it with newly built executable) Windows says test.exe is open by test.exe and cannot be deleted even though test.exe is not running and there are no other processes that have a handle to test.exe (verified by running Sysinternals handle.exe tool). The only way to deal with this problem is to reboot Windows or log off and log on.
test.exe uses test.dll. If the exception happens in test.dll code, then test.dll will stay locked until reboot.
I did not have this problem on my previous old laptop with the same OS and I don't have it on my work laptop with Windows 10 Pro.
The .net application is a console one written in c#. The content of the code does not matter, it can be just one line that generates any exception. If I run the binary from explorer, I do not experience this problem, only when I run it from the command line. If I kill the main thread test.exe of my test.exe process in sysinternals process explorer before I hit "debug" or "close" button, then I can delete the file without a problem.
It looks like a Windows bug but why I did not have it in my old laptop and my work laptop?
I wonder if anyone else has experience the same problem? Or even better if someone knows how to fix it.
Thanks a lot!

Eclipse neon: generate core dump

I am debugging an application in Eclipse Neon on Ubuntu 16.04. My project requires that I generate a core dump (which includes all memory (heap, stack, code segments, etc) for the process under debug) while simultaneously having a debug session for that application.
I tried to use "gcore" from a Terminal while debugging the same application in Eclipse. This gives me:
warning: process 32062 is already traced by process 32032
ptrace: Operation not permitted.
You can't do that without a process to debug.
The program is not being run.
gcore: failed to create core.32062
If I use "gcore" without debugging the application in Eclipse a core dump is produced.
I do not find the option to generate a core dump from within Eclipse ... does that exists? Where to find it? Can I add a plugin which allows me to "execute a gcore" (similar) command from within Eclipse while debugging the application?
Thanks! Hope you can help.
Meanwhile I figured it out. In Eclipse you can select the gdb console tab once you are debugging using the "Debug" perspective. This gdb console is an interactive console (like all other consoles in Eclipse Neon). Here you can just type the command "generate-core-file" which will core dump the memory of the process under debug.
Also good to note is that there is a "suspend" button which you can use to "pauze" your application at any moment in time. After "suspend" you can also create a core dump using "generate-core-file" in the gdb console.

Starting a 64bit process from a 32bit app?

I have a WPF 4.0 application that I have compiled for x86. When running on 64bit Win7, I need to start up an on-screen keyboard, located in %windows%/System32/osk.exe. Problem is I can't do it- I get an error 'Could not start On-Screen Keyboard'.
I found this thread:
Unable to launch onscreen keyboard (osk.exe) from a 32-bit process on Win7 x64 which sounds exactly like my problem.
I used all the relevant bits from that post, but the error persists. And even worse, I managed to get a 32 bit version of osk.exe and when I try to start THAT I just get a blank error box- no message at all, just a red 'X'.
So I can't compile my app for AnyCPU (3rd party interop libs), and have read that that might not solve the issue anyways. I have also read that one workaround is to disable virtualization using Wow64DisableWow64FsRedirection, but that this is unsafe. Seems like a lot of effort just to run a little app :(
What can I do to launch this little thing from my app?
Wrapping the offending app in a exe compiled with AnyCPU works fine and seems to be the least painful approach.

Debugging release-mode binaries in VC++

I have an .exe that crashes in release mode. I want to debug where the crash occurs.
How can I use VC++ to debug a crash in a release-mode .exe?
You can run Visual Studio and attach it to a process to debug.
Also check through the Windows Event Viewer (an often overlooked source of information) for any exceptions that Windows may have caught.
Firstly if you have access to the code you can open the workspace in visual studion and debug it by pressing F5 button.
Secondly go through the steps that leads to the crash. At that point of time check the location pointed to by the call stack.
This will give you indication on the funciton or line where crash is occuring.
We are assuming this application was written in VC++. How often are you able to reproduce this issue. Is it like everytime you can reproduce it or how is it.

Cross-debug Windows application on Linux box in Eclipse CDT

I'm moved from Windows to Ubuntu Linux, and now I want to set up development environment here. The problem is that I need
C/C++ IDE comparable to Visual Studio
Way to generate Windows PE binaries
Way do debug Windows PE binaries
At first time I tried Code::Blocks. Here I find guide to setting it up for cross-development so I managed to get "Hello World" compiled and running under Wine. Moreover, debugging worked too.
But then I found that Eclipse + CDT plugin is far more advanced IDE. I spent some time and finally get project compiled and linked.
Now I'm trying to get MinGW Insight version of GDB working within Eclipse CDT. Simple way to use debugger described in Code::Blocks guide won't work anymore. I continue to receive "Error creating session" messages.
So my question is, how I can use MinGW GDB under Wine as debugger back-end in Eclipse?
Or, what is best IDE for Linux->Windows cross-development?
I'm wondering that nobody answered this yet.
QtCreator. Don't be confused by its name, QtCreator works is pretty well with any kind of C++ code, you don't need to code in Qt to use it. It is just like FOSS Visual Studio: it does even have a syntax checking "on fly".
MinGW. Here's not much to say, it is just creates Win PE executables, and it works. It is available in repositories. Note, that a Win GUI applications have special bit in it's PE header set; so, in order to create GUI application with MinGW you have to pass an option -mwindows to set this bit.
This is a problem. Really: I'm just trying to debug a windows application, and didn't find yet a way to do it. I will shortly recall here what I tried so far, just in order for you to not step on my rakes:
winedbg. Probably it should work, but for me it didn't. When I set a breakpoint, i.e. like this br 43, it says Unable to add breakpoint (unknown address 7b860807).
winedbg. Yeah, again, but this time we will use it like this winedbg --gbd to make it proxying a commands to gdb. Probably this is the only way to debug an application, but it have a drawbacks: first, in order to restart an application you have to exit debugger; if you enter run it says that the remote target doesn't support this. Second, I have no even idea how to debug a multithreaded application; when I first started this, I stumbled upon an error Non-stop mode requested, but remote does not support non-stop, and after setting a breakpoint and starting it says:
Cannot insert breakpoint 1. and Cannot access memory at address 0x401654. So, in order to make this work I was needed to rename my .gdbinit file (i.e. non-stop mode is set there).
gdb.exe. I was sure that I found a way: simple usage of a windows version of gdb should solve problems; more over, for me, as I am a Emacs guy, it would be absolutely the same as debugging with native gdb. But alas, the windows gdb just didn't work. If I run it, and enter any command, it simply does nothing. It only reacts on Ctrl-c and Ctrl-z commands. Probably I will try on my spare time to ask a question about it on mailing list. Well, now we can't use it...
So what we have do with debug? Most probably seek another Windows debugger that works under WINE. If I correctly recall, OllyDbg worked, but I don't know at the moment how to make it show a source code.
you can try NetBeans.It's a good free, open source
and Cross Platform Support IDE.
Run Windows in a VM?
Seriously, your question is good, but it's probably not worth spending the time to figure out the answer (especially: since nobody seems to have a ready answer). If you have real work to do, native Windows or Windows in a VM is the answer.

Resources