56 lines
2.9 KiB
Factor
56 lines
2.9 KiB
Factor
! Copyright (C) 2009 Slava Pestov.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: accessors assocs debugger io kernel literals math.parser
|
|
namespaces prettyprint sequences system windows.kernel32
|
|
windows.ole32 windows.errors math ;
|
|
IN: debugger.windows
|
|
|
|
CONSTANT: seh-names
|
|
H{
|
|
{ $ STATUS_GUARD_PAGE_VIOLATION "STATUS_GUARD_PAGE_VIOLATION" }
|
|
{ $ STATUS_DATATYPE_MISALIGNMENT "STATUS_DATATYPE_MISALIGNMENT" }
|
|
{ $ STATUS_BREAKPOINT "STATUS_BREAKPOINT" }
|
|
{ $ STATUS_SINGLE_STEP "STATUS_SINGLE_STEP" }
|
|
{ $ STATUS_ACCESS_VIOLATION "STATUS_ACCESS_VIOLATION" }
|
|
{ $ STATUS_IN_PAGE_ERROR "STATUS_IN_PAGE_ERROR" }
|
|
{ $ STATUS_INVALID_HANDLE "STATUS_INVALID_HANDLE" }
|
|
{ $ STATUS_NO_MEMORY "STATUS_NO_MEMORY" }
|
|
{ $ STATUS_ILLEGAL_INSTRUCTION "STATUS_ILLEGAL_INSTRUCTION" }
|
|
{ $ STATUS_NONCONTINUABLE_EXCEPTION "STATUS_NONCONTINUABLE_EXCEPTION" }
|
|
{ $ STATUS_INVALID_DISPOSITION "STATUS_INVALID_DISPOSITION" }
|
|
{ $ STATUS_ARRAY_BOUNDS_EXCEEDED "STATUS_ARRAY_BOUNDS_EXCEEDED" }
|
|
{ $ STATUS_FLOAT_DENORMAL_OPERAND "STATUS_FLOAT_DENORMAL_OPERAND" }
|
|
{ $ STATUS_FLOAT_DIVIDE_BY_ZERO "STATUS_FLOAT_DIVIDE_BY_ZERO" }
|
|
{ $ STATUS_FLOAT_INEXACT_RESULT "STATUS_FLOAT_INEXACT_RESULT" }
|
|
{ $ STATUS_FLOAT_INVALID_OPERATION "STATUS_FLOAT_INVALID_OPERATION" }
|
|
{ $ STATUS_FLOAT_OVERFLOW "STATUS_FLOAT_OVERFLOW" }
|
|
{ $ STATUS_FLOAT_STACK_CHECK "STATUS_FLOAT_STACK_CHECK" }
|
|
{ $ STATUS_FLOAT_UNDERFLOW "STATUS_FLOAT_UNDERFLOW" }
|
|
{ $ STATUS_INTEGER_DIVIDE_BY_ZERO "STATUS_INTEGER_DIVIDE_BY_ZERO" }
|
|
{ $ STATUS_INTEGER_OVERFLOW "STATUS_INTEGER_OVERFLOW" }
|
|
{ $ STATUS_PRIVILEGED_INSTRUCTION "STATUS_PRIVILEGED_INSTRUCTION" }
|
|
{ $ STATUS_STACK_OVERFLOW "STATUS_STACK_OVERFLOW" }
|
|
{ $ STATUS_CONTROL_C_EXIT "STATUS_CONTROL_C_EXIT" }
|
|
{ $ STATUS_FLOAT_MULTIPLE_FAULTS "STATUS_FLOAT_MULTIPLE_FAULTS" }
|
|
{ $ STATUS_FLOAT_MULTIPLE_TRAPS "STATUS_FLOAT_MULTIPLE_TRAPS" }
|
|
{ HEX: e06d7363 "Visual C++ exception" }
|
|
}
|
|
|
|
: seh-name. ( n -- )
|
|
seh-names at [ " (" ")" surround write ] when* ;
|
|
|
|
M: windows signal-error.
|
|
"Windows exception 0x" write
|
|
third [ >hex write ] [ seh-name. ] bi nl ;
|
|
|
|
M: ole32-error error.
|
|
"COM error 0x" write
|
|
dup code>> HEX: ffff,ffff bitand >hex write ": " write
|
|
message>> write ;
|
|
|
|
M: windows-error error.
|
|
"Win32 error 0x" write
|
|
dup n>> HEX: ffff,ffff bitand >hex write ": " write
|
|
string>> write ;
|
|
|