Crash dump进程信息
linux下 比较简单,这里不在说明,
windows下 相对复杂一点,用SetUnhandledExceptionFilter 来捕获 MiniDumpWriteDump 来写dmp文件,这种方法还不够完全,一些错误 一样无法捕获 比如 多次 delete ,可修改注册表 crash自动生成dmp 而不用代码去控制 结合代码控制 一起使用
#if _WIN32
#include <windows.h>
#include <dbghelp.h>
#pragma comment(lib, "dbghelp.lib")
void myInvalidParameterHandler(const wchar_t* expression,
const wchar_t* function,
const wchar_t* file,
unsigned int line,
uintptr_t pReserved)
{
throw 1;
}
LONG CustomCrashHandledExceptionFilter(_EXCEPTION_POINTERS *ExceptionInfo)
{
CHAR strDumpFile[MAX_PATH] = { 0 };
SYSTEMTIME tm;
HANDLE hFile = NULL;
time_t rawtime;
struct tm * t;
time(&rawtime);
t = localtime(&rawtime);
sprintf(strDumpFile, "%d%s%d-%04d-%02d-%02d-%02d-%02d-%02d.dmp", sid, name.c_str(), g_Inner_id, t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->www.boyunylpt1.com tm_min, t->tm_sec);
hFile = CreateFileA(strDumpFile, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
MINIDUMP_EXCEPTION_INFORMATION ExInfo;
ExInfo.ThreadId = GetCurrentThreadId();
ExInfo.ExceptionPointers www.maituyul1.cn = ExceptionInfo;
ExInfo.ClientPointers = NULL;
BOOL bOK = MiniDumpWriteDump(
GetCurrentProcess(www.furongpt.com),
GetCurrentProcessId(www.dashuju2.cn),
hFile,
MiniDumpNormal,
&ExInfo,
NULL,
NULL);
CloseHandle(hFile);
}
return EXCEPTION_CONTINUE_SEARCH;
}
LPTOP_LEVEL_EXCEPTION_FILTER WINAPI EmptySetUnhandledExceptionFilter(
LPTOP_LEVEL_EXCEPTION_www.yingka178.com FILTER lpTopLevelExceptionFilter)
{
return NULL;
}
void myPurecallHandler(void)
{
throw 1;
}
BOOL HookSetUnhandledExceptionFilter()
{
HMODULE hKernel32 = LoadLibraryA(("kernel32.dll"));
if (hKernel32 == NULL) return FALSE;
void *pOrgEntry = GetProcAddress(hKernel32, "SetUnhandledExceptionFilter");
if (pOrgEntry == www.yongshi123.cn NULL) return FALSE;
unsigned char newJump[100];
DWORD dwOrgEntryAddr = (DWORD)pOrgEntry;
dwOrgEntryAddr +www.yongshiyule178.com= 5; // add 5 for 5 op-codes for jmp far
void *pNewFunc = &EmptySetUnhandledExceptionFilter;
DWORD dwNewEntryAddr www.michenggw.com= (DWORD)pNewFunc;
DWORD dwRelativeAddr =www.dfgjpt.com dwNewEntryAddr - dwOrgEntryAddr;
newJump[0] = 0xE9; // JMP absolute
memcpy(&newJump[1], &dwRelativeAddr, sizeof(pNewFunc));
SIZE_T bytesWritten;
BOOL bRet = WriteProcessMemory(GetCurrentProcess(),
pOrgEntry, newJump, sizeof(pNewFunc) + 1, &bytesWritten);
return bRet;
}
class CrashHandler
{
public:
CrashHandler()
{
// SetErrorMode(SEM_FAILCRITICALERRORS);
SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)CustomCrashHandledExceptionFilter);
_purecall_handler old_pure_handle;
old_pure_handle = _set_purecall_handler(myPurecallHandler);
_invalid_parameter_handler oldHandler;
oldHandler = _set_invalid_parameter_handler(myInvalidParameterHandler);
HookSetUnhandledExceptionFilter();
在高阶导数的时候说过,如果两个函数每一阶导数都相等,那么"理论上"两个函数是相等的。
因为我们有cos′(x)=−sin(x)、cos′′(x)=−cos(x)、cos′′′(x)=sin(x)、cos′′′′(x)=cos(x)
此后就是−sin(x)、−cos(x)、sin(x)、cos(x)循环,求导次数x,其xmod 4=1,2,3,0的时候分别对应这四个。
cos(0)=1⇒f(x)=a0+∑ni=1ai⋅0=a0=1
cos′(0)=0⇒f′(x)=1⋅a1+∑ni=2(i−1)ai⋅0=1!⋅a1=0
cos′′(0)=−1⇒f′′(x)=1⋅2⋅a2+∑ni=3(i−1)⋅(i−2)ai=2!⋅a2=−1
cos′′′(0)=0⇒f′′′(x)=1⋅2⋅3a3+∑ni=4(i−1)⋅(i−2)⋅(i−3)ai=3!⋅a3=0
cos′′′′(0)=1⇒f′′′′(x)=1⋅2⋅3⋅4a4+∑ni=5(i−1)⋅(i−2)⋅(i−3)⋅(i−4)ai=4!⋅a4=1
可以发现规律了,假设取了i次导数,且有i=2n。
n是奇数有:i!⋅ai=−1⇒ai=−1i!
n是偶数有:i!⋅ai=1⇒ai=1i!
也就是cos(x)=1−x22!+x44!−x66!+x48!−⋯
同样的思路可以证明sin(x)=∑∞i=2n+1,n∈N(−1)nxii!=x−x33!+x55!−x77!+⋯
证明ex=⋯比这更容易,根据定义(ex)′=ex,重复上述过程即可。
麦克劳林展开式
ex=∑∞i=0xii!=1+x11!+x22!+x33!+x44!+⋯
sin(x)=∑∞i=2n+1,n∈N(−1)nxii!=x−x33!+x55!−x77!+⋯
cos(x)=∑∞i=2n,n∈N(−1)nxii!=1−x22!+x44!−x66!+⋯
本文正题
eix=1+(ix)11!+(ix)22!+(ix)33!+(ix)44!+(ix)55!=1+ix1!−x22!−ix33!+x44!+ix55!−⋯
把带有i的提出来有:
eix=1−x22!+x44!−x66!+⋯+i(x−x33!+x55!−x77!)=cos(x)+i×sin(x)
当x=π的时候
eiπ=cos(π)+i×sin(π)=−1
所以
Crash dump进程信息的更多相关文章
- [Erlang 0057] Erlang 排错利器: Erlang Crash Dump Viewer
http://www.cnblogs.com/me-sa/archive/2012/04/28/2475556.html Erlang Crash Dump Viewer真的是排错的天兵神器,还记得我 ...
- iOS 几种常用的 crash log 崩溃信息调试方法
前言:crash log 对 定位崩溃问题 ,并且不容易复现,尤其是及时对appstore 上正在运营的 app 的迭代改进来说 非常重要. 1 crash两种情况 1.1 测试环境下 追踪bug 1 ...
- Gmail进程信息转储分析工具pdgmail
Gmail进程信息转储分析工具pdgmail 进程信息转储(Process Memory Dump)是数字取证的重要方式.通过分析对应进程的信息转储,可以获取大量的信息.Kali Linux提供一 ...
- 记录linux 生成crash dump文件步骤
执行文件编译时加入-g 命令 例如 g++ -g test.cpp 查看当前系统限制情况 ulimit -a 设置crash dump 文件大小 ulimit -c unlimited unlimit ...
- 使用jps查看JVM进程信息
VM进程状态工具 - 列出目标系统上已检测的HotSpot Java虚拟机进程信息.可直接在装有java运行环境的Windows 或者 Linux机器上使用命令行执行jps命令.一个典型的应用场景,例 ...
- C#获取CPU占用率、内存占用、磁盘占用、进程信息
代码: using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading ...
- ALT+TAB切换时小图标的添加 界面透明 屏幕大小 竖行字体 进程信息
一,ALT+TAB切换时小图标的添加 Dlg类中添加变量 protected: HICON m_hIcon; #define IDR_MAINFRAME 128 ICON IDR_MAINFRAME, ...
- SNMP远程监控进程信息的OID
最近有个项目需要用snmp远程监控进程信息.于是我查了一下资料. 一.资料 .1.3.6.1.2.1.25.4.2.1.1.iso.org.dod.internet.mgmt.mib-2.host.h ...
- Linux常用命令 查看进程信息时 copy的-----温故而知新
1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括其他用户的程序. ps -A 显示所有程序. ps c 列出程序时,显示每个程序真正的 ...
随机推荐
- 1.4《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——编辑命令
在编辑模式中,命令行包括几个重复之前命令的功能.这些以及其他很多命令功能时常设计键盘上的特殊键,所以给出Table 1作为参考,给出了许多键在典型的Macintosh键盘上的标记符号.若你的键盘不太一 ...
- 20155202 张旭《网络对抗》Exp2 后门原理与实践
20155202 张旭<网络对抗>Exp2 后门原理与实践 基础问题回答 例举你能想到的一个后门进入到你系统中的可能方式? 捆绑在软件中 注入在可执行文件里 注入在office文件的宏里面 ...
- 20155234 《网络对抗》Exp 8 Web基础
基础问答 什么是表单 可以收集用户的信息和反馈意见,是网站管理者与浏览者之间沟通的桥梁. 表单包括两个部分:一部分是HTML源代码用于描述表单(例如,域,标签和用户在页面上看见的按钮),另一部分是脚本 ...
- SCC的奇葩算法——Kosaraju
不会Tarjan,难道就不能与邪恶的SCC作斗争了吗? 祭出Kosaraju. 一些变量名的意义: a[N] 原图的vector存储 b[N] 原图的所有边反向vector存储 s dfs得出的拓扑序 ...
- DotNetCore部署(IIS)踩坑记
一.windows系统中Dotnet core runtime 安装后,无法启动次程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll的解决方法 错误现象如图 因为 ...
- Nuxt 开发 - 项目初始化
Nuxt是基于Vue的一个应用框架,采用服务端渲染(SSR),可以让用户的Vue单页面应用(SPA)也可以有利于SEO. 项目初始化 参考:https://zh.nuxtjs.org/guide/in ...
- [BZOJ4857][JSOI2016]反质数序列[最大点独立集]
题意 在长度为 \(n\) 的序列 \(a\) 中选择尽量长的子序列,使得选出子序列中任意两个数的和不为质数. \(n\leq3000\ ,a_i\leq10^5\). 分析 直接按照奇偶性建立二分图 ...
- 记一次Spring的aop代理Mybatis的DAO所遇到的问题
由来 项目中需要实现某个订单的状态改变后然后推送给第三方的功能,由于更改状态的项目和推送的项目不是同一个项目,所以为了不改变原项目的代码,我们考虑用spring的aop来实现. 项目用的是spring ...
- maven常用命令集
maven常用命令 mvn compile 编译主程序源代码,不会编译test目录的源代码.第一次运行时,会下载相关的依赖包,可能会比较费时间. mvn test-compile 编译测试代码,c ...
- mongodb安装教程
MongoDB 下载及安装 MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www. ...