Я считаю, что JDownloader написан на Java. Я думаю, что язык позволяет вам получить полную трассировку стека в виде простого текста в любой точке. C ++ не может этого сделать, потому что скомпилированный исполняемый файл обычно не хранит никакой информации о коде, использованном для его генерации.
Windows API позволяет вам перехватывать фатальные исключения и создавать дамп процесса (или частей процесса, если вы не хотите иметь дело с огромным файлом). Затем этот дамп можно проверить с помощью windbg, Visual Studio или другого выбранного вами отладчика.
Недостатком этого является то, что вы должны иметь точный исходный код, который использовался для создания выгружаемого исполняемого файла, а также базу данных символов (файл PDB), которая была сгенерирована во время сборки. Кроме того, некоторый код можно оптимизировать таким образом, чтобы отладчик не мог дать вам точную трассировку стека, даже с символьными данными.
Подробнее см. MiniDumpWriteDump . Если вы собираетесь пойти по этому пути, лучше всего , а не генерировать дамп в процессе сбоя, а порождать дочерний процесс, чтобы получить дамп родительского.
Существуют также библиотеки C и C ++, которые могут «вручную» записывать стек вызовов и давать вам текстовое представление его во время выполнения, но я не встречал ни одной из них, которые я бы предложил.