# Load base config file from dxConfig import dxConfig # Add CrashInfo group if it doesn't exist. dxCrashInfoConfig = dxConfig.get("CrashInfo", {}) # Add default values where no values have been supplied: for (sName, xValue) in { "bOutputIO": False, # Output cdb i/o while debugging application "uMaxAddressOffset": 0xFFF, # How far from an address can a pointer be offset and still be considered to point to it? "uMaxFunctionOffset": 0xFFF, # How far from a function symbol can a pointer be offset and still be cosidered to point to it? "uMaxStackFramesCount": 20, # How many stack frames are retreived for analysis? "uStackHashFramesCount": 3, # How many stack frames are hashed for the crash id? "asSymbolCachePaths": [], # Where are symbols cached? "bOutputFirstChanceExceptions": False, # Are first chance exceptions detected and output? "bOutputCommandLine": False, # Is the cbd.exe command line printed before execution? }.items(): if sName not in dxCrashInfoConfig: dxCrashInfoConfig[sName] = xValue
import json, re, os, sys, threading; from cCrashInfo import cCrashInfo; from dxConfig import dxConfig; dxCIConfig = dxConfig.get("ci", {}); if __name__ == "__main__": asArguments = sys.argv[1:]; if len(asArguments) == 0: print "Usage:"; print " ci.py [options] --pids=[comma separated list of process ids]"; print " Attach debugger to the process(es) provided in the list. The processes must"; print " all have been suspended, as they will be resumed by the debugger."; print " ci.py [options] path\\to\\executable.exe [arguments]"; print " Start the executable in the debugger with the provided arguments."; print; print "Options:"; print " --ci.bSaveReport=false"; print " Do not save a HTML formatted crash report."; print " --CrashInfo.bOutputIO=true"; print " Show verbose cdb output and input during debugging."; print " --CrashInfo.asSymbolCachePaths=[\"C:\\Symbols\"]"; print " Use C:\\Symbols to cache synmbol (.pdb) files."; print " See dxConfig.py and cCrashInfo\dxCrashInfoConfig.py for a list of settings."; print " All values must be valid JSON of the appropriate type. No checks are made"; print " to ensure this. Providing illegal values will most likely result in"; print " exceptions at some point during crash analysis. You have been warned."; sys.exit(1); auApplicationProcessIds = None; while len(asArguments) and asArguments[0].startswith("--"): if asArguments[0].startswith("--"): if asArguments[0].startswith("--pids="):
# Load base config file from dxConfig import dxConfig; # Add CrashInfo group if it doesn't exist. dxCrashInfoConfig = dxConfig.get("CrashInfo", {}); # Add default values where no values have been supplied: for (sName, xValue) in { "bOutputIO": False, # Output cdb i/o while debugging application "uMaxAddressOffset": 0xFFF, # How far from an address can a pointer be offset and still be considered to point to it? "uMaxFunctionOffset": 0xFFF, # How far from a function symbol can a pointer be offset and still be cosidered to point to it? "uMaxStackFramesCount": 20, # How many stack frames are retreived for analysis? "uStackHashFramesCount": 3, # How many stack frames are hashed for the crash id? "asSymbolCachePaths": [], # Where are symbols cached? "bOutputFirstChanceExceptions": False, # Are first chance exceptions detected and output? "bOutputCommandLine": False, # Is the cbd.exe command line printed before execution? "bDebugSymbolLoading": False, # Enable noizy symbol loading in cdb. }.items(): if sName not in dxCrashInfoConfig: dxCrashInfoConfig[sName] = xValue;
import json, re, sys, threading; from cCrashInfo import cCrashInfo; from dxConfig import dxConfig; dxCIConfig = dxConfig.get("ci", {}); if __name__ == "__main__": asArguments = sys.argv[1:]; if len(asArguments) == 0: print "Usage:"; print " ci.py [options] --pids=[comma separated list of process ids]"; print " Attach debugger to the process(es) provided in the list. The processes must"; print " all have been suspended, as they will be resumed by the debugger."; print " ci.py [options] path\to\executable.exe [arguments]"; print " Start the executable in the debugger with the provided arguments."; print; print "Options:"; print " --ci.bSaveReport=true"; print " Save a HTML formatted crash report using the crash id as the file name."; print " --CrashInfo.bOutputIO=true"; print " Show verbose cdb output and input during debugging."; print " --CrashInfo.asSymbolCachePaths=[\"C:\\Symbols\"]"; print " Use C:\\Symbols to cache synmbol (.pdb) files."; print " See dxConfig.py and cCrashInfo\dxCrashInfoConfig.py for a list of settings."; print " All values must be valid JSON of the appropriate type. No checks are made"; print " to ensure this. Providing illegal values will most likely result in"; print " exceptions at some point during crash analysis. You have been warned."; sys.exit(1); auApplicationProcessIds = None; while len(asArguments) and asArguments[0].startswith("--"): if asArguments[0].startswith("--"): if asArguments[0].startswith("--pids="):