11 : file(pfile), message(pmessage), lineNumber(plineNumber)
16 : file(ex.file), message(ex.message), lineNumber(ex.lineNumber)
27 message = other.message;
28 lineNumber = other.lineNumber;
43 void vw_trace(
const char* filename,
int linenumber,
const char* fmt, ...)
45 char buffer[4 * 1024];
46 int offset =
sprintf_s(buffer,
sizeof(buffer),
"%s:%d (%d): ", filename, linenumber, GetCurrentThreadId());
49 va_start(argptr, fmt);
50 offset +=
vsprintf_s(buffer + offset,
sizeof(buffer) - offset, fmt, argptr);
53 sprintf_s(buffer + offset,
sizeof(buffer) - offset,
"\n");
55 OutputDebugStringA(buffer);
60 LARGE_INTEGER frequency_;
61 LARGE_INTEGER startTime_;
64 StopWatch::StopWatch() : data(
new StopWatchData())
66 if (!::QueryPerformanceFrequency(&data->frequency_))
67 THROW(
"Error with QueryPerformanceFrequency");
68 ::QueryPerformanceCounter(&data->startTime_);
71 StopWatch::~StopWatch() {
delete data; }
73 double StopWatch::MilliSeconds()
const 76 ::QueryPerformanceCounter(&now);
78 return double(now.QuadPart - data->startTime_.QuadPart) / (double(data->frequency_.QuadPart) / 1000);
84 std::wstring systemDir(MAX_PATH + 1,
'\0');
85 UINT nChars = GetSystemDirectoryW(&systemDir[0], (UINT)systemDir.length());
88 systemDir.resize(nChars);
91 DWORD pid = GetCurrentProcessId();
92 std::wostringstream s;
93 s << systemDir << L
"\\vsjitdebugger.exe -p " << pid;
94 std::wstring cmdLine = s.str();
98 ZeroMemory(&si,
sizeof(si));
101 PROCESS_INFORMATION pi;
102 ZeroMemory(&pi,
sizeof(pi));
104 if (!CreateProcessW(NULL, &cmdLine[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
108 CloseHandle(pi.hThread);
109 CloseHandle(pi.hProcess);
112 while (!IsDebuggerPresent()) Sleep(100);
const char * Filename() const
const char * what() const noexcept override
vw_exception & operator=(const vw_exception &other) noexcept
~vw_exception() noexcept override
vw_exception(const char *file, int lineNumber, std::string const &message) noexcept