Method and apparatus for profiling edges that pass through stub code
segments in executable program code. The compilation and linking of a
computer program sometimes generates stub code segments that implement the
transfer of control to functions that are external to a local segment of
code. Branches through the stub code segments hinder the analysis of edges
relative to the source code. In various embodiments of the invention,
edges are created to represent respective branch instructions in the
executable program code. Each edge has a source attribute, a target
attribute, and an edge-taken count attribute. During execution, the
numbers of times edges are taken are counted, and stub entry points and
stub targets are identified. For each edge having a target that matches an
entry point of a stub code segment, the edge target is changed to the stub
target associated with the matching entry point. By identifying edges that
target stub code segments, edges that target stub code segments can be
combined with other edges for correlation with the source code.
Método y aparato para perfilar los bordes que pasan con segmentos de código del trozo en código ejecutable del programa. La compilación y el ligarse de un programa de computadora genera a veces los segmentos de código del trozo que ponen la transferencia en ejecucio'n del control a las funciones que son externas a un segmento local del código. Los ramas con los segmentos de código del trozo obstaculizan el análisis de bordes concerniente al código de fuente. En las varias encarnaciones de la invención, los bordes se crean para representar instrucciones de rama respectivas en el código ejecutable del programa. Cada borde tiene una cualidad de la fuente, una cualidad de la blanco, y una cualidad borde-tomada de la cuenta. Durante la ejecución, los números de épocas que se toman los bordes se cuentan, y se identifican los puntos de entrada del trozo y las blancos del trozo. Para cada borde que tiene una blanco que empareje un punto de entrada de un segmento de código del trozo, la blanco del borde se cambia a la blanco del trozo asociada al punto de entrada que empareja. Identificando afila que los segmentos de código del trozo de la blanco, los bordes que los segmentos de código del trozo de la blanco se pueden combinar con otros bordes para la correlación con el código de fuente.