mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-17 23:17:06 +02:00
Crash dumps now go to the project's own Sentry server. The launcher's out-of-process helper is unchanged; only where it posts and what it expects back are: - The default endpoint is the Sentry project's minidump URL. Report attributes travel as Sentry tags, with the release as reskate@<version>. - An upload counts as accepted when the server answers with an event ID. - "backtrace" is "crash_report" throughout: the namespace, files, CMake targets, DINGOSDK_CRASH_REPORT_URL, DINGOSDK_BUILD_CRASH_REPORT_TESTS and the RESKATE_CRASH_REPORT_URL override. Performance timings are new, and off unless "Send performance timings" is ticked in the launcher's settings (RESKATE_TRACING=1). A small tracer (Engine/Core/Debug/trace.h) posts each finished step to Sentry as a transaction from a background thread; the launcher and the game it starts share one trace. Timed: the update check, the Steam download, Thunderstore installs, the mod merge, starting the game, the launch up to the first playable level, each level load, joining a session, fetching the identity lists, and the time spent in each level with its average frame rate and long frames. Turning crash reports off turns timings off too.
18 lines
652 B
C++
18 lines
652 B
C++
#pragma once
|
|
#include <Windows.h>
|
|
#include <filesystem>
|
|
#include <optional>
|
|
|
|
namespace dingosdk::crash_report {
|
|
struct NativeDump {
|
|
std::filesystem::path path;
|
|
DWORD process_id{}, process_created{}, thread_id{}, exception_code{}, timestamp{};
|
|
ULONG64 exception_address{};
|
|
};
|
|
// Match the exact process lifetime, not filenames or modification times. The game
|
|
// can emit several dumps for one fault; choose the first, preferring its rich mdmp.
|
|
std::optional<NativeDump> find_native_dump(const std::filesystem::path& directory,
|
|
DWORD process_id, DWORD process_created) noexcept;
|
|
DWORD process_creation_seconds(HANDLE process) noexcept;
|
|
}
|