windbg关于.NET分析的扩展命令
收到一个dump文件,运行环境的.net framework的详细版本是多少呢?
dump信息与性能计数器结合分析时,想知道该dump运行的进程号是多少?
dump定位到有效的堆栈信息,而对应的源码是怎么写的呢?
mex扩展提供了大量节省人力搜索的命令,类似扩展可以到windbg网站了解:http://www.windbg.org/
0:102> .time
Debug session time: Wed Nov 15 10:44:19.000 2017 (UTC + 8:00)
System Uptime: 116 days 10:02:02.508
Process Uptime: 0 days 1:03:59.000
Kernel time: 0 days 0:07:30.000
User time: 0 days 3:58:17.000
0:102> lmvm clr
Browse full module list
start end module name
000007fe`f8ba0000 000007fe`f950b000 clr (pdb symbols) c:\symbols\clr.pdb\AD25374E6B2F4798B4FDFDB14E19D79B2\clr.pdb
Loaded symbol image file: clr.dll
Image path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Image name: clr.dll
Browse all global symbols functions data
Timestamp: Thu Sep 12 08:14:10 2013 (52310752)
CheckSum: 00967281
ImageSize: 0096B000
File version: 4.0.30319.18408
Product version: 4.0.30319.18408
File flags: 8 (Mask 3F) Private
File OS: 4 Unknown Win32
File type: 2.0 Dll
File date: 00000000.00000000
Translations: 0409.04b0
CompanyName: Microsoft Corporation
ProductName: Microsoft® .NET Framework
InternalName: clr.dll
OriginalFilename: clr.dll
ProductVersion: 4.0.30319.18408
FileVersion: 4.0.30319.18408 built by: FX451RTMGREL
PrivateBuild: DDBLD130
FileDescription: Microsoft .NET Runtime Common Language Runtime - WorkStation
LegalCopyright: © Microsoft Corporation. All rights reserved.
Comments: Flavor=Retail
0:102> !dml_proc
DbgId PID Image file name
0 2c40 c:\Windows\System32\inetsrv\w3wp.exe
OS Thread Id: 0x1c30 (199)
Child SP IP Call Site
0000000026265510 000000007734046a [GCFrame: 0000000026265510]
0000000026265768 000000007734046a [GCFrame: 0000000026265768]
0000000026265718 000000007734046a [HelperMethodFrame: 0000000026265718] System.Threading.Monitor.Enter(System.Object)
0000000026265870 000007fef8bbe0e2 System.Environment+ResourceHelper.GetResourceStringCode(System.Object)
0000000026265fb8 000007fefa0c10b4 [HelperMethodFrame_PROTECTOBJ: 0000000026265fb8] System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
00000000262660e0 000007fef8bbdfb8 System.Environment+ResourceHelper.GetResourceString(System.String, System.Globalization.CultureInfo)
0000000026266130 000007fef8bbe7f8 System.Environment.GetResourceStringLocal(System.String)
0000000026266548 000007fefa0c10b4 [ContextTransitionFrame: 0000000026266548]
0000000026266508 000007fefa0c10b4 [GCFrame: 0000000026266508]
0000000026266768 000007fefa0c10b4 [HelperMethodFrame_2OBJ: 0000000026266768] System.Environment.GetResourceFromDefault(System.String)
0000000026266890 000007fef8b880be System.Environment.GetResourceString(System.String, System.Object[])
00000000262668d0 000007fef97b8306 System.IO.__Error.WinIOError(Int32, System.String)
0000000026266920 000007fef8c29f51 System.IO.FileStream.Init(System.String, System.IO.FileMode, System.IO.FileAccess, Int32, Boolean, System.IO.FileShare, Int32, System.IO.FileOptions, SECURITY_ATTRIBUTES, System.String, Boolean, Boolean)
0000000026266ab0 000007fef8c29585 System.IO.FileStream..ctor(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, Int32, System.IO.FileOptions, System.String, Boolean)
0000000026266b60 000007fef8be60ba System.IO.FileStream..ctor(System.String, System.IO.FileMode)
0000000026266be0 000007ff001c2b7b xxxxxxxxx.MDM.Pub.Common.MDMPubFunction.WriteTextFile(System.String)
0000000026266c80 000007ff001f9b48 xxxxxxxxx.MDM.Interface.Server.Com.MDMInterfaceCore.ExecuteSql(System.String[], System.String, System.String ByRef)
0000000026266db0 000007ff001c508c xxxxxxxxx.MDM.Interface.Server.Com.MDMInterface.MDMInterfaceJson(System.String, System.String, Boolean)
0000000026268850 000007ff00456d72 xxxxxxxxx.MDM.Interface.Server.Com.MDMInterface.GenerateModifySql(System.String, Boolean, System.Data.DataTable, System.Data.DataTable, Newtonsoft.Json.Linq.JObject, System.String ByRef)
000000002626a8f0 000007ff001c9bc6 xxxxxxxxx.MDM.Interface.Server.Com.MDMInterface.MDMInterfaceJson(System.String, System.String, Boolean)
000000002626c390 000007ff001c27be xxxxxxxxx.MDM.Interface.Server.Com.MDMInterface.MDMInterfaceJson(System.String, System.String)
000000002626c4b0 000007ff001c1dfb xxxxxxxxx.MDM.Interface.Server.Service.MDMInterfaceSrv.MDMInterfaceJson(System.String, System.String)
000000002626cbe8 000007fefa0c10b4 [DebuggerU2MCatchHandlerFrame: 000000002626cbe8]
000000002626ccd0 000007fefa0c10b4 [CustomGCFrame: 000000002626ccd0]
000000002626cc98 000007fefa0c10b4 [GCFrame: 000000002626cc98]
000000002626cc28 000007fefa0c10b4 [GCFrame: 000000002626cc28]
000000002626cff8 000007fefa0c10b4 [HelperMethodFrame_PROTECTOBJ: 000000002626cff8] System.RuntimeMethodHandle._InvokeMethodFast(System.IRuntimeMethodInfo, System.Object, System.Object[], System.SignatureStruct ByRef, System.Reflection.MethodAttributes, System.RuntimeType)
000000002626d140 000007fef8b9587f System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, Boolean)
000000002626d280 000007fef8be0426 System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
000000002626d2d0 000007fef7a74c02 System.Web.Services.Protocols.LogicalMethodInfo.Invoke(System.Object, System.Object[])
000000002626d350 000007fef7a8b132 System.Web.Services.Protocols.WebServiceHandler.Invoke()
000000002626d3e0 000007fef7a8ad5b System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
000000002626d450 000007fef7abdb68 System.Web.Services.Protocols.SyncSessionlessHandler.ProcessRequest(System.Web.HttpContext)
000000002626d4b0 000007feefa0e5a8 System.Web.Script.Services.ScriptHandlerFactory+HandlerWrapper.ProcessRequest(System.Web.HttpContext)
000000002626d4e0 000007fef3305c25 System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
000000002626d5a0 000007fef32d337a System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)
000000002626d650 000007fef32e7030 System.Web.HttpApplication+ApplicationStepManager.ResumeSteps(System.Exception)
000000002626d710 000007fef32d2879 System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(System.Web.HttpContext, System.AsyncCallback, System.Object)
000000002626d770 000007fef32d777c System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest)
000000002626d7f0 000007fef3a67ac3 System.Web.RequestQueue.WorkItemCallback(System.Object)
000000002626d840 000007fef8ba3178 System.Threading.ExecutionContext.runTryCode(System.Object)
000000002626df68 000007fefa0c10b4 [HelperMethodFrame_PROTECTOBJ: 000000002626df68] System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
000000002626e090 000007fef8b917e1 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
000000002626e0f0 000007fef8bdc419 System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
000000002626e140 000007fef8bdba83 System.Threading.ThreadPoolWorkQueue.Dispatch()
000000002626e1e0 000007fef8bdb8d5 System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
000000002626e840 000007fefa0c10b4 [DebuggerU2MCatchHandlerFrame: 000000002626e840]
000000002626ea18 000007fefa0c10b4 [ContextTransitionFrame: 000000002626ea18]
000000002626ec00 000007fefa0c10b4 [DebuggerU2MCatchHandlerFrame: 000000002626ec00]
0:199> !ip2md 000007ff001c2b7b
MethodDesc: 000007ff00305610
Method Name: xxxxxxxxx.MDM.Pub.Common.MDMPubFunction.WriteTextFile(System.String)
Class: 000007ff00321f20
MethodTable: 000007ff00305638
mdToken: 0000000006000071
Module: 000007ff00300c20
IsJitted: yes
CodeAddr: 000007ff001c28d0
Transparency: Critical
0:199> !DumpModule 000007ff00300c20
Name: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\cwbase\b1d2b51b\62f03f15\assembly\dl3\c065d636\0073700f_62f6d001\xxxxxxxxx.MDM.Pub.Common.dll
Attributes: PEFile
Assembly: 00000000028b54c0
LoaderHeap: 0000000000000000
TypeDefToMethodTableMap: 000007ff00316038
TypeRefToMethodTableMap: 000007ff003160e8
MethodDefToDescMap: 000007ff00316660
FieldDefToDescMap: 000007ff00316dd0
MemberRefToDescMap: 000007ff00317068
FileReferencesMap: 000007ff00317dc0
AssemblyReferencesMap: 000007ff00317dc8
MetaData start address: 000000006df7bdf4 (37564 bytes)
0:199> !SaveModule 000007ff00300c20 D:\xxxxxxxxx.MDM.Pub.Common.dll
3 sections in file
section 0 - VA=2000, VASize=13184, FileAddr=200, FileSize=13200
section 1 - VA=16000, VASize=3b8, FileAddr=13400, FileSize=400
section 2 - VA=18000, VASize=c, FileAddr=13800, FileSize=200
0:192> !mex.p
Name Ses PID PEB Mods Handle Thrd
======== === ============== ================ ==== ====== ====
w3wp.exe 0 2c40 (0n11328) 000007fffffde000 1927 6332 251 CommandLine: c:\windows\system32\inetsrv\w3wp.exe -ap "cwbasev4.0" -v "v4.0" -l "webengine4.dll" -a \\.\pipe\iisipm994a2419-0359-47c9-ae5b-d46cbbf85bfd -h "C:\inetpub\temp\apppools\cwbasev4.0\cwbasev4.0.config" -w "" -m 1
Last event: 2c40.2308: Wake debugger - code 80000007 (first/second chance not available) Show Threads: Unique Stacks !listthreads (!lt) ~*kv 0:208> !mex.help
Mex currently has 255 extensions available. Please specify a keyword to search.
Or browse by category: All PowerShell[6] SystemCenter[3] Networking[12] Process[5] Mex[2] Kernel[27] DotNet[32] Decompile[15] Utility[40] Thread[27] Binaries[6] General[22]
0:208> !mex.help -cat 'DotNet'
Command Description Category
=========================================== =================================================================== ========
aspnetcache (!aspnetcache) Display the ASP.NET Cache DotNet
aspxpagesext Like !aspxpages, but more powerful DotNet
clrstack2 (!ck2) Prints the stack trace of a managed thread DotNet
cordll (!cordll) Displays available CLR versions DotNet
dae (!DumpAllExceptions) Replacement for !dae DotNet
delegaterefs (!drefs) Displays information about objects referenced by delegates DotNet
displayobj (!do2) Display a managed object structure DotNet
dumpaspnetsession Prints information on ASP.NET InProc Sessions DotNet
dumpdataset Dumps a list of all DataSet objects DotNet
dumpdynamicassemblies2 (!dda2) Like !DumpDynamicAssemblies, but better DotNet
dumphttpruntime2 Dumps the HttpRuntime objects on the heap DotNet
dumpwcfmessage (!wcfmsg) Dumps information about a WCF buffered message DotNet
finalizable (!finalizable) Displays information about finalizable objects in the GC Heap DotNet
foreachobject (!feo) Runs a command against each CLR object DotNet
gchandleinfo (!gchandle) Displays information on GC Handles DotNet
gcheapinfo (!gchi) Get info on the managed GC Heap DotNet
httpheaders Print the contents of an HttpHeaderCollection DotNet
ilspy Automatically extracts the module from the dump, and launches ILSpy DotNet
managedthreads (!mthreads) A !threads look-alike, with !aspxpagexext-like output DotNet
objectsummary Outputs object analysis summary DotNet
oracleclientperfcounters Display System.Data.OracleClient performance counters DotNet
printdbcommand Prints information about a DBCommand object DotNet
printexception2 (!pe2) Like !PrintException, with DML DotNet
sqlclientperfcounters Display System.Data.SqlClient performance counters DotNet
sqlcmd Provides information about ADO.NET Commands to SQL Server DotNet
sqlcn Provides an overview of ADO.NET connections to SQL Server DotNet
sqlports (!sqlports) Gets the local and remote TCP ports from a SqlConnection object DotNet
staticfields Display static fields of a managed type DotNet
svcthreads (!svcthreads) Find threads executing WCF services DotNet
tasktriage (!tasks) Analyzes the System.Threading.Tasks.Task objects still on the heap. DotNet
wcfperfcounters Dumps performance counters for WCF services DotNet
wcftcpconnectionpools (!wtcp) Display WCF Net.TCP connection pools DotNet 0:192> !clrstack2 208
DbgId ThreadId Apartment Kind CLR GC Mode GC Suspending?
208 2590 MTA Worker v4.0.30319.18408 Preemptive no SqlCommand
----------
Command 0x00000008bfad3648
CommandText SP_Get_Data_Paged
Connection 0x00000008bfad2da8
ConnectionString data source=192.168.108.84;initial catalog=xxxxx;user id=yyyyyyy;password=xxxxxxxx;Connect Timeout=3600
Timeout 01:40:00
Duration? 00:00:07.7321433 SP IP Function Source
0000000acfb0c888 0000000000000000 InlinedCallFrame
0000000acfb0c888 0000000000000000 InlinedCallFrame
0000000acfb0c860 000007fef2c76e11 DomainNeutralILStubClass.IL_STUB_PInvoke(SNI_ConnWrapper*, SNI_Packet**, Int32)
0000000acfb0c930 000007fef2c5d17f SNINativeMethodWrapper.SNIReadSyncOverAsync(System.Runtime.InteropServices.SafeHandle, IntPtr ByRef, Int32)
0000000acfb0c9a0 000007fef2c5ce9e System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync()
0000000acfb0ca50 000007fef2c5cdb0 System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket()
0000000acfb0ca90 000007fef2c5d5a0 System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer()
0000000acfb0cac0 000007fef2c60492 System.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte ByRef)
0000000acfb0cb00 000007fef2c5f4b7 System.Data.SqlClient.TdsParser.TryRun(System.Data.SqlClient.RunBehavior, System.Data.SqlClient.SqlCommand, System.Data.SqlClient.SqlDataReader, System.Data.SqlClient.BulkCopySimpleResultSet, System.Data.SqlClient.TdsParserStateObject, Boolean ByRef)
0000000acfb0cca0 000007fef2c6c55d System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
0000000acfb0cd10 000007fef2c6c4da System.Data.SqlClient.SqlDataReader.get_MetaData()
0000000acfb0cd60 000007fef2c669bc System.Data.SqlClient.SqlCommand.FinishExecuteReader(System.Data.SqlClient.SqlDataReader, System.Data.SqlClient.RunBehavior, System.String)
0000000acfb0cde0 000007fef2c6688b System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, Boolean, Int32, System.Threading.Tasks.Task ByRef, Boolean, System.Data.SqlClient.SqlDataReader)
0000000acfb0cee0 000007fef2c65cfa System.Data.SqlClient.SqlCommand.RunExecuteReader(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, System.String, System.Threading.Tasks.TaskCompletionSource`1<System.Object>, Int32, System.Threading.Tasks.Task ByRef, Boolean)
0000000acfb0cfb0 000007fef2c65a9b System.Data.SqlClient.SqlCommand.RunExecuteReader(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, System.String)
0000000acfb0d040 000007fef2c64860 System.Data.SqlClient.SqlCommand.ExecuteReader(System.Data.CommandBehavior, System.String)
0000000acfb0d100 000007fef2c644a4 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(System.Data.CommandBehavior)
0000000acfb0d160 000007fef2c69a55 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(System.Data.CommandBehavior)
0000000acfb0d190 000007fef2c4c5c5 System.Data.Common.DbDataAdapter.FillInternal(System.Data.DataSet, System.Data.DataTable[], Int32, Int32, System.String, System.Data.IDbCommand, System.Data.CommandBehavior)
0000000acfb0d240 000007fef2c4c404 System.Data.Common.DbDataAdapter.Fill(System.Data.DataSet, Int32, Int32, System.String, System.Data.IDbCommand, System.Data.CommandBehavior)
0000000acfb0d2f0 000007fef2c4c206 System.Data.Common.DbDataAdapter.Fill(System.Data.DataSet)
0000000acfb0d3a0 000007fe9962c56e Genersoft.Platform.Core.DataAccess.Database.GetDataSet(System.String, System.String, System.Data.IDbDataParameter[], Boolean)
0000000acfb0d470 000007fe99de3d47 Genersoft.Platform.Core.DataAccess.Database.RunProcGetDataSet(System.String, System.String, System.Data.IDbDataParameter[], Int32[])
0000000acfb0d4f0 000007fe9a342beb Genersoft.Platform.Core.DataAccess.Database.GetPaginaryDataSet(System.String, System.String, System.String, System.String, System.String, System.String, Int32, Int32, Int32 ByRef, Int32 ByRef, System.String, System.String, System.String)
0000000acfb0d590 000007fe9a358975 Genersoft.Platform.Workflow.Server.BusinessProcess.RefWorkItemBillMgr.GetWorkItemsWithCustomFields(System.String, System.String, Genersoft.Platform.Workflow.Spi.Model.InstanceApprovalState, Genersoft.Platform.Core.Common.GSPFilter)
0000000acfb0d680 000007fe9a35793a GSP_WorkflowWebService.ORUWebService.GetWorkItemsWithCustomFields(System.String, System.String, System.String, System.String ByRef)
0000000acfb0dbf8 0000000000000000 DebuggerU2MCatchHandlerFrame
0000000acfb0dc58 0000000000000000 HelperMethodFrame_PROTECTOBJ [System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)]
0000000acfb0ddd0 000007fef7aed28c System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[])
0000000acfb0de40 000007fef7aee2b1 System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
0000000acfb0df60 000007fe9960b5e5 Genersoft.Platform.AppFramework.Service.GSPRestfulContext.Invoke(System.String, System.String, System.String, Boolean, System.String[], Int32[] ByRef, System.String[] ByRef)
0000000acfb0e020 000007fe996093f4 Genersoft.Platform.AppFramework.RESTFulWebService.GSPHttpWebHandler.Invoke(System.IO.BinaryReader, System.Web.HttpContext)
0000000acfb0e120 000007fe996088e9 Genersoft.Platform.AppFramework.RESTFulWebService.GSPHttpWebHandler.ProcessRequest(System.Web.HttpContext)
0000000acfb0e260 000007fef1cd2d41 System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
0000000acfb0e340 000007fef1c98bd5 System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)
0000000acfb0e3e0 000007fef254d8f8 System.Web.HttpApplication+ApplicationStepManager.ResumeSteps(System.Exception)
0000000acfb0e490 000007fef2428cf3 System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(System.Web.HttpContext, System.AsyncCallback, System.Object)
0000000acfb0e4f0 000007fef244c515 System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest)
0000000acfb0e5b0 000007fef253d592 System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr, Int32)
0000000acfb0e6d0 000007fef24066c0 DomainNeutralILStubClass.IL_STUB_COMtoCLR(Int64, Int32, IntPtr)
0000000acfb0eaa8 0000000000000000 ContextTransitionFrame
0000000acfb0ecc0 0000000000000000 ComMethodFrame
windbg关于.NET分析的扩展命令的更多相关文章
- WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDb ...
- WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDb ...
- x264源代码简单分析:x264命令行工具(x264.exe)
===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...
- Windbg内核调试之二: 常用命令
运用Windbg进行内核调试, 熟练的运用命令行是必不可少的技能. 但是面对众多繁琐的命令, 实在是不可能全部的了解和掌握. 而了解Kernel正是需要这些命令的指引, 不断深入理解其基本的内容. 下 ...
- 在WinDbg里使用MEX调试扩展
简介 针对WinDbg的MEX调试扩展可以帮助您简化常见的调试器任务,并为调试器提供强大的文本筛选功能.此扩展被Microsoft支持工程师广泛用于解决流程应用程序的故障. 下载&安装 下载m ...
- C#编程模式之扩展命令
C#编程模式之扩展命令 前言 根据上一篇的命令模式和在工作中遇到的一些实际情况,有了本篇文章,时时都是学习的一个过程,会在这个过程中发现许多好的模式或者是一种开发方式,今天写出来的就是我工作中常用到的 ...
- Java 动态代理机制分析及扩展
Java 动态代理机制分析及扩展,第 1 部分 王 忠平, 软件工程师, IBM 何 平, 软件工程师, IBM 简介: 本文通过分析 Java 动态代理的机制和特点,解读动态代理类的源代码,并且模拟 ...
- 调试技巧 —— 如何利用windbg + dump + map分析程序异常
调试技巧 —— 如何利用windbg + dump + map分析程序异常 逗比汪星人2011-09-04上传 调试技巧 —— 如何利用windbg + dump + map分析程序异常 http ...
- 第1阶段——uboot分析之查找命令run_command函数和命令定义过程(6)
本节主要学习,run_command函数命令查找过程,命令生成过程 1.run_command函数命令查找过程分析:在u-boot界面中(main_loop();位于u-boot-1.1.6/comm ...
随机推荐
- 理解Babel是如何编译JS代码的及理解抽象语法树(AST)
Babel是如何编译JS代码的及理解抽象语法树(AST) 1. Babel的作用是? 很多浏览器目前还不支持ES6的代码,但是我们可以通过Babel将ES6的代码转译成ES5代码,让所有的浏览器都 ...
- 【java】计算一段代码执行时长java.lang.System类里的public static long currentTimeMillis()方法
public class Test_currentTimeMillis { public static void main(String[] args) { long start=System.cur ...
- [array] leetcode - 33. Search in Rotated Sorted Array - Medium
leetcode - 33. Search in Rotated Sorted Array - Medium descrition Suppose an array sorted in ascendi ...
- 命令行执行php脚本 中$argv和$argc
在实际工作中有可能会碰到需要在nginx命令行执行php脚本的时候,当然你可以去配置一个conf用外网访问. 在nginx命令行中 使用 php index.php 就可以执行这个index.php脚 ...
- [摘抄]VC6.0移植到VS2008(vs2005)后的错误总结(未全部验证)
============================================================================================= 201405 ...
- appium 解锁九宫格
很多人在自动化的过程中,对解锁9宫格有很多麻烦,特别是app上的有些整个放在整个view中,这就给我们测试解锁九宫格带来问题了,笔者尝试了去解决,但是都没有找到一个很好的方案,那么我就试着先去通过安卓 ...
- php逐行读取txt文件写入数组的方法
使用说明: 采用fopen 方法,逐行读取数据,并使用feof($fp) 判断是否文件截止,最后通过filter() 方法,去除空白行,得到所需数据 $file = fopen("user ...
- 搭建subversion 服务器,并自动部署项目
1 subversion目录文件说明: *dav目录:是提供apache与mod_dav_svn使用的目录,让他们存储内部数据*db目录:就是所有版本控制的数据存放文件*hooks目录:放置hook脚 ...
- NPOI 2.0 教程
NPOI2.0帮助官方地址 目录 1. 前言 1.1 NPOI 2.0与NPOI 1.x的区别 1.2 NPOI 2.0模块简介 1.3 自动识别并打开Excel 2003和Excel 2007文件 ...
- VS2010 Extension实践(2)
在上一篇(VS2010 Extension (1)实践)里,主要展示了如何使用MEF扩展VS2010,来扩展编辑控制和展现自己的UI:在实现QuickToolbar的时候,发现MEF仅仅提供了很基本的 ...