]> gitweb.factorcode.org Git - factor.git/blob - basis/debugger/windows/windows.factor
3485d96447d580ca94ecbb0058cb3d1a925f94cd
[factor.git] / basis / debugger / windows / windows.factor
1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: assocs debugger io kernel literals namespaces prettyprint
4 sequences system windows.kernel32 ;
5 IN: debugger.windows
6
7 CONSTANT: seh-names
8     H{
9         { $ STATUS_GUARD_PAGE_VIOLATION       "STATUS_GUARD_PAGE_VIOLATION"     }
10         { $ STATUS_DATATYPE_MISALIGNMENT      "STATUS_DATATYPE_MISALIGNMENT"    }
11         { $ STATUS_BREAKPOINT                 "STATUS_BREAKPOINT"               }
12         { $ STATUS_SINGLE_STEP                "STATUS_SINGLE_STEP"              }
13         { $ STATUS_ACCESS_VIOLATION           "STATUS_ACCESS_VIOLATION"         }
14         { $ STATUS_IN_PAGE_ERROR              "STATUS_IN_PAGE_ERROR"            }
15         { $ STATUS_INVALID_HANDLE             "STATUS_INVALID_HANDLE"           }
16         { $ STATUS_NO_MEMORY                  "STATUS_NO_MEMORY"                }
17         { $ STATUS_ILLEGAL_INSTRUCTION        "STATUS_ILLEGAL_INSTRUCTION"      }
18         { $ STATUS_NONCONTINUABLE_EXCEPTION   "STATUS_NONCONTINUABLE_EXCEPTION" }
19         { $ STATUS_INVALID_DISPOSITION        "STATUS_INVALID_DISPOSITION"      }
20         { $ STATUS_ARRAY_BOUNDS_EXCEEDED      "STATUS_ARRAY_BOUNDS_EXCEEDED"    }
21         { $ STATUS_FLOAT_DENORMAL_OPERAND     "STATUS_FLOAT_DENORMAL_OPERAND"   }
22         { $ STATUS_FLOAT_DIVIDE_BY_ZERO       "STATUS_FLOAT_DIVIDE_BY_ZERO"     }
23         { $ STATUS_FLOAT_INEXACT_RESULT       "STATUS_FLOAT_INEXACT_RESULT"     }
24         { $ STATUS_FLOAT_INVALID_OPERATION    "STATUS_FLOAT_INVALID_OPERATION"  }
25         { $ STATUS_FLOAT_OVERFLOW             "STATUS_FLOAT_OVERFLOW"           }
26         { $ STATUS_FLOAT_STACK_CHECK          "STATUS_FLOAT_STACK_CHECK"        }
27         { $ STATUS_FLOAT_UNDERFLOW            "STATUS_FLOAT_UNDERFLOW"          }
28         { $ STATUS_INTEGER_DIVIDE_BY_ZERO     "STATUS_INTEGER_DIVIDE_BY_ZERO"   }
29         { $ STATUS_INTEGER_OVERFLOW           "STATUS_INTEGER_OVERFLOW"         }
30         { $ STATUS_PRIVILEGED_INSTRUCTION     "STATUS_PRIVILEGED_INSTRUCTION"   }
31         { $ STATUS_STACK_OVERFLOW             "STATUS_STACK_OVERFLOW"           }
32         { $ STATUS_CONTROL_C_EXIT             "STATUS_CONTROL_C_EXIT"           }
33     }
34
35 : seh-name. ( n -- )
36     seh-names get at [ " (" ")" surround write ] when* ;
37
38 M: windows signal-error.
39     "Windows exception 0x" write
40     third [ .h ] [ seh-name. ] bi nl ;