← Back to Patent Explorer
US6026235A Expired / Lapsed US ⏱️ 0.0 years remaining

System and methods for monitoring functions in natively compiled software programs

Assignee: Borland Software Corp
•
Filing: 1997-05-20
•
Granted: 2000-02-15
•
Expires: 2017-05-20
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A development system having a monitor/profiler tool for monitoring functions in natively compiled software programs is described. According to the present invention, the monitor/profiler tool is constructed to work directly on a natively compiled software application which only have debugging info. Unlike prior approaches, the monitor/profiler tool does not require a special compile or link phase for the application under exam. The tool can monitor any function in software application which has debug info, thus relieving program developers from the burden of maintaining two ways of building an application. The developer can simply use the same executable for both development and function analysis.

Inventors

  • 👤 Steven T. Shaughnessy

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-06 13:07
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/36; G06F11/3604; G06F11/3612; G06F11/30; G06F11/34; G06F11/3466

Claims Analysis

Total Claims: 22
Claim 1
Independent Claim 138 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein each stub in turn calls an entry point into a monitoring routine for monitoring the function associated with the stub.
Claim 2
Dependent Claim 138 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein each stub in turn calls an entry point into a monitoring routine for monitoring the function associated with the stub.
Claim 3
Dependent Claim 23 words
The method of claim 1, wherein each stub includes a jump instruction for returning control back to the function associated with the stub.
Claim 4
Dependent Claim 144 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein said scanning step includes: performing a binary search on known functions sorted by function address to determine function addresses that should be patched to call stubs.
Claim 5
Dependent Claim 144 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein said scanning step includes: performing a binary search on known functions sorted by function address to determine function addresses that should be patched to call stubs.
Claim 6
Dependent Claim 159 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein said scanning step includes: disassembling all code of the particular program for determining each call instruction to a function which is to be monitored, whereupon microprocessor instructions defining each such call are patched to call the stub associated with the function.
Claim 7
Dependent Claim 159 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein said scanning step includes: disassembling all code of the particular program for determining each call instruction to a function which is to be monitored, whereupon microprocessor instructions defining each such call are patched to call the stub associated with the function.
Claim 8
Dependent Claim 129 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein said debugging information includes symbolic information indicating names addresses for functions.
Claim 9
Dependent Claim 129 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein said debugging information includes symbolic information indicating names addresses for functions.
Claim 10
Dependent Claim 134 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein at least one stub invokes a monitoring routine for analyzing the function associated with the stub.
Claim 11
Dependent Claim 134 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein at least one stub invokes a monitoring routine for analyzing the function associated with the stub.
Claim 12
Dependent Claim 132 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, further comprising: stripping debugging information from the particular program when no further monitoring is desired.
Claim 13
Dependent Claim 132 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, further comprising: stripping debugging information from the particular program when no further monitoring is desired.
Claim 14
Dependent Claim 150 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein said step of determining names and address locations of functions includes: sorting name and address location information both by name and by address, for allowing fast lookups by name or by address.
Claim 15
Dependent Claim 150 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein said step of determining names and address locations of functions includes: sorting name and address location information both by name and by address, for allowing fast lookups by name or by address.
Claim 16
Dependent Claim 161 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein said step of scanning the particular program for replacing each call instruction to a function being monitored includes: scanning all addresses present in relocation tables of the particular program; and disassembling all code of the particular program, for searching for relative call instructions.
Claim 17
Dependent Claim 161 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein said step of scanning the particular program for replacing each call instruction to a function being monitored includes: scanning all addresses present in relocation tables of the particular program; and disassembling all code of the particular program, for searching for relative call instructions.
Claim 18
Dependent Claim 142 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein at least one stub invokes a profiler, for recording invocation of the function associated with the stub prior to actual execution of the function.
Claim 19
Dependent Claim 142 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein at least one stub invokes a profiler, for recording invocation of the function associated with the stub prior to actual execution of the function.
Claim 20
Dependent Claim 136 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein a return address is saved during program execution for each function call which is invoking an associated stub.
Claim 21
Dependent Claim 136 words
In a software development system for developing software programs, a method for monitoring functions in natively-compiled software programs, the method comprising: receiving a request to monitor functions of a particular program which has been compiled with debugging information; determining names and address locations of functions to be monitored in the particular program; building a stub table that has a stub associated with each function to be monitored; and scanning the particular program for replacing each call instruction to a function being monitored with a call instruction to a stub associated with the function, so that all calls to a particular function to be monitored are modified to call the stub instead of directly calling the particular function, wherein a return address is saved during program execution for each function call which is invoking an associated stub.
Claim 22
Dependent Claim 15 words
The method of claim 11, wherein said return address is saved on a parallel stack.

References Cited (Backward Citations)

US5313616A Cited
US5535391A Cited
US5446900A Cited
US5579520A Cited
US5528753A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2003-02-14 2003-08-16 2004-02-15 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2007-02-14 2007-08-16 2008-02-15 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2011-02-14 2011-08-16 2012-02-15 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag