This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#自动抓取Dump, 当异常信息包含特定字符串 | |
1. procdump.exe -ma -e 1 -f <Exception Content> <PID> | |
.i.e. procdump.exe -ma -e 1 -f "Commands ouy of sync" 3368 | |
-ma Write a dump file with all process memory. The default dump format only includes thread and handle information. | |
-e Write a dump when the process encounters an unhandled exception. Include the 1 to create dump on first chance exceptions. | |
-f Filter the first chance exceptions. Wildcards (*) are supported. To just display the names without dumping, use a blank ("") filter. | |
C:\>procdump -e 1 -f "" w3wp.exe | |
Display without writing a dump, the exception codes/names of w3wp.exe |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1. A General Fast Method Invoker (https://www.codeproject.com/Articles/14593/A-General-Fast-Method-Invoker) | |
public static FastInvokeHandler GetMethodInvoker(MethodInfo methodInfo) | |
{ | |
DynamicMethod dynamicMethod = new DynamicMethod(string.Empty, | |
typeof(object), new Type[] { typeof(object), | |
typeof(object[]) }, | |
methodInfo.DeclaringType.Module); | |
ILGenerator il = dynamicMethod.GetILGenerator(); | |
ParameterInfo[] ps = methodInfo.GetParameters(); | |
Type[] paramTypes = new Type[ps.Length]; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct Result<T> { | |
public T Ok { get; } | |
public Exception Error { get; } | |
public bool IsFailed { get => Error != null; } | |
public bool IsOk => !IsFailed; | |
public Result (T ok) { | |
Ok = ok; | |
Error = default (Exception); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static async Task<T> Otherwise<T> (this Task<T> task, Func<Task<T>> orTask) { | |
task.ContinueWith (async innerTask => { | |
if (innerTask.Status == TaskStatus.Faulted) | |
return await orTask (); | |
return await Task.FromResult<T> (innerTask.Result); | |
}).Unwrap (); | |
} | |
static async Task<T> Retry<T> (Func<Task<T>> task, int retries, TimeSpan delay, CancellationToken cts = default (CancellationToken)) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1) 准备工作 | |
.loadby sos clr | |
.cordll -ve -u -l | |
.load <<path>>\sosex.dll | |
.load <<path>>\mex.dll | |
.symfix | |
.reload | |
2) 常用方法 | |
!pe [<exceptionAddr>] most recent exception data (don’t forget the external stack) |
OlderNewer