摘要:
In one embodiment, a method and apparatus for stack walking a call stack associated with mixed code, by interleaving a native stack walking process with a managed stack walking process. Mixed code comprises at least one managed instruction and at least one native instruction, and the call stack comprises at least one managed frame and at least one native frame. The managed frames being associated with the managed instructions, and the native frames being associated with native instructions. The method comprises acts of performing a managed stack walk on the call stack, a native stack walk on native frames of the call stack. In a further embodiment, handling indirect jumps during a native stack walk, and in another embodiment, detecting validity of a memory address.
摘要:
A user can control when data sampling takes place, what data is collected and where in the code the data sampling profiler is invoked. By identifying a section of user code to the profiler, the profiler is instructed to dynamically instrument the identified user code executing in a target application process. The instrumentation invokes the profiler before or after or both before and after the identified section of user code is executed. By identifying an entry point of a component or technology external to the user code, the profiler is instructed to dynamically instrument the external component so that data sampling is logged when the user code calls the entry point of the external component. The data sampling process can be monitored and the sampling rate can be dynamically adjusted.
摘要:
Cross session process actions such as diagnostics in which a diagnostic process running in one process attaches and performs diagnostics on a process running in another session. Upon determining that diagnosis is to be performed on a process of another session, diagnostic process uses an intermediary session to launch diagnostic processes in the target session. Thus, actions such as diagnostics can be initiated across sessions.
摘要:
In one embodiment, a method is provided for use in a system which includes a target application, a profiler application and a debugging application, the profiler application being operative to attach to the target application and, upon attaching to the target application, performing operations to profile the target application, the debugging application being operative to monitor the target application. The method comprises attaching, by the profiler application, to the target application such that operations performed by the profiler application in profiling the target application are susceptible to monitoring by the debugging application. In one embodiment, the method further comprises generating helper code; transferring the helper code to the memory used by the target application; and causing the helper code to be executed from the memory used by the target application, wherein the helper code, when executed, causes the profiler agent library to be loaded to the memory used by the target application.
摘要:
Cross session process actions such as diagnostics in which a diagnostic process running in one process attaches and performs diagnostics on a process running in another session. Upon determining that diagnosis is to be performed on a process of another session, diagnostic process uses an intermediary session to launch diagnostic processes in the target session. Thus, actions such as diagnostics can be initiated across sessions.
摘要:
A contention log contains data for contentions that occur during execution of a multi-threaded application, such as a timestamp of the contention, contention length, contending thread identity, contending thread call stack, and contended-for resource identity. After execution of the application ends, contention analysis data generated from the contention log shows developers information such as total number of contentions for particular resource(s), total number of contentions encountered by thread(s), a list of resources that were most contended for, a list of threads that were most contending, a plot of the number of contentions per time interval during execution of the application, and so on. A developer may pivot between details about threads and details about resources to explore relationships between thread(s) and resource(s) involved in contention(s). Other information may also be displayed, such as call stacks, program source code, and process thread ownership, for example.
摘要:
In one embodiment, a method is provided for use in a system which includes a target application, a profiler application and a debugging application, the profiler application being operative to attach to the target application and, upon attaching to the target application, performing operations to profile the target application, the debugging application being operative to monitor the target application. The method comprises attaching, by the profiler application, to the target application such that operations performed by the profiler application in profiling the target application are susceptible to monitoring by the debugging application. In one embodiment, the method further comprises generating helper code; transferring the helper code to the memory used by the target application; and causing the helper code to be executed from the memory used by the target application, wherein the helper code, when executed, causes the profiler agent library to be loaded to the memory used by the target application.
摘要:
A contention log contains data for contentions that occur during execution of a multi-threaded application, such as a timestamp of the contention, contention length, contending thread identity, contending thread call stack, and contended-for resource identity. After execution of the application ends, contention analysis data generated from the contention log shows developers information such as total number of contentions for particular resource(s), total number of contentions encountered by thread(s), a list of resources that were most contended for, a list of threads that were most contending, a plot of the number of contentions per time interval during execution of the application, and so on. A developer may pivot between details about threads and details about resources to explore relationships between thread(s) and resource(s) involved in contention(s). Other information may also be displayed, such as call stacks, program source code, and process thread ownership, for example.
摘要:
In one embodiment, a method and apparatus for stack walking a call stack associated with mixed code, by interleaving a native stack walking process with a managed stack walking process. Mixed code comprises at least one managed instruction and at least one native instruction, and the call stack comprises at least one managed frame and at least one native frame. The managed frames being associated with the managed instructions, and the native frames being associated with native instructions. The method comprises acts of performing a managed stack walk on the call stack, a native stack walk on native frames of the call stack. In a further embodiment, handling indirect jumps during a native stack walk, and in another embodiment, detecting validity of a memory address.