US20050114738A1 - Systems and methods for monitoring object activity through an external agent using a proxy object - Google Patents
Systems and methods for monitoring object activity through an external agent using a proxy object Download PDFInfo
- Publication number
- US20050114738A1 US20050114738A1 US11/016,652 US1665204A US2005114738A1 US 20050114738 A1 US20050114738 A1 US 20050114738A1 US 1665204 A US1665204 A US 1665204A US 2005114738 A1 US2005114738 A1 US 2005114738A1
- Authority
- US
- United States
- Prior art keywords
- data
- application
- recited
- proxy
- monitoring
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3096—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents wherein the means or processing minimize the use of computing system or of computing system component resources, e.g. non-intrusive monitoring which minimizes the probe effect: sniffing, intercepting, indirectly deriving the monitored data from other directly available data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Definitions
- the systems and methods described herein relate to monitoring and debugging objects. More particularly, the described invention relates to systems and methods for monitoring activity of an object using a proxy object to debug a problem detected in the object.
- This problem may be compounded when the application is user-configurable as it is difficult to determine if the problem lies with the application itself, with a user's configuration of the application, or with the application's environment, i.e., the operating system on which the application is running.
- a typical way to debug an application is to install one or more special debugging files and activate debug logging while the application is executing so that data is collected in a log file.
- the log file can then be analyzed to identify the problem.
- This method can be time consuming and unreliable, especially if the identified problem only shows up in a particular environment. It is not uncommon that a developer trying to debug a problem is not associated with the users who have experienced the problem. The developer may have difficulty conceiving certain configuration aspects that are utilized by the users in particular environment configurations.
- a software package called DIRECTSHOW produced by MICROSOFT CORP utilizes multiple user-configurable filters that are collectively referred to as a filter graph. If users of a DIRECTSHOW application experiences problems with the application, they typically rely on developers from MICROSOFT CORP. to identify the problem and provide a solution to the problem.
- a proxy object is created that is called in place of the monitored object. This is done by modifying a registry entry in an operating system that controls execution of the application.
- the proxy object processes the information it receives in the call and, in turn, calls the monitored object, passing in the same information that was passed to the proxy object when the proxy object was called.
- a remote procedure call (RPC) channel in the proxy object is used to monitor the activity of the object.
- RPC remote procedure call
- information about the activity of the object can be output to a file, a display, a printer, etc.
- the information may be output through the RPC channel to a remote location, so a developer can debug an application from a remote site.
- proxy object as described herein is transparent to the monitored object, the application using the monitored object, and the operating system that controls the execution of the application.
- FIG. 1 is a block diagram depicting a prior art method that an application uses to create and use an object.
- FIG. 2 is a block diagram of a computer system configured to allow an external agent to utilize a proxy object to monitor activity of an object used by an application.
- FIG. 3 is a flow diagram depicting a method for monitoring activity of an object with a proxy object.
- FIG. 4 is a block diagram depicting a particular implementation of the present invention.
- FIG. 5 is a diagram of an exemplary system on which the present invention may be implemented.
- This invention concerns a systems and methods for monitoring object activity through an external agent using a proxy object.
- the invention described herein may be used to debug a problem in an application that utilizes the monitored object.
- An application using the present invention may be used in conjunction with one or more other applications to locally or remotely monitor object activity utilizing a proxy object.
- the present invention is may at times be described according to a particular implementation. However, it is noted that the features described herein may be applied to any computer system or application that utilizes an operating system registry or middle agent to create and load an object.
- the invention is illustrated in the drawings as being implemented in a suitable computing environment.
- the invention is described in the general context of computer-executable instructions, such as program modules, to be executed by a computing device, such as a personal computer or a hand-held computer or electronic device.
- program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
- program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
- program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
- the invention may be practiced with other computer system configurations, including multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like.
- the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
- program modules may be located in both local and remote memory storage devices.
- FIG. 1 is a block diagram depicting a prior art method that an application 100 uses to create and utilize an object 102 .
- the application 100 sends a request to an operating system 104 for the operating system 104 to create the object 102 .
- the operating system 104 checks a registry 106 in the operating system 104 to find a library 108 in which the object 102 resides. If the library 108 has been loaded and has registered with the operating system 104 , then the registry 106 will have an entry for the library 108 . If the library 108 is identified by the operating system 104 , the operating system 104 requests the library 108 to create the object 102 . When the object 102 is created, it is returned to the application 100 and the application 100 is then able to utilize the object 102 during execution of the application 100 .
- the method described above is the basic method that is altered in the present invention to utilize a proxy object to monitor the activity of the object 102 .
- a proxy object is utilized in the present invention, the basic activities of the application 100 , the operating system 106 and the object 102 remain unaffected.
- the basic activities of the application, the operating system and the object includes the communication interactions between the application, the operating system and/or the object. Therefore, those components function similarly as they have been described above.
- FIG. 2 is a block diagram a computer system 200 configured to allow an external agent 202 to utilize a proxy object 204 to monitor activity of an object 206 used by an application 208 .
- the computer system 200 includes memory 210 , a processor 212 and an input/output (I/O) module 214 .
- the I/O module 214 is used to facilitate communications between the computer system 200 and external hardware (not shown) connected to the computer system 200 .
- the computer system 200 also includes a communications module 216 , a display 218 and various hardware components 220 that are typically included in computer systems.
- the communications module 216 is a network card, a modem, or some other component that facilitates communication with remote systems. In the present example described herein, the communications module 216 is used to allow the external agent 202 to communicate with the computer system 200 and its components.
- the computer system 200 also includes the application 208 that executes in conjunction with the operating system 222 that includes a registry 224 .
- a library 226 is shown that includes the object 206 and has registered with the operating system 222 .
- the proxy object 204 marshals data transmitted between the object 206 and the application 208 . As data passes to and from the proxy object 204 , the data may be monitored.
- the external agent 202 e.g., an applet
- the external agent 202 is configured to redirect the registry 224 to the proxy object 204 and to control the proxy object 204 .
- proxy objects 204 there may be more than one proxy object 204 .
- the proxy objects may be included in a container, such as a dynamically linked library, an executable, etc., for convenience purposes, although it is not necessary.
- a container such as a dynamically linked library, an executable, etc.
- a specific implementation using two proxy objects is described in detail below. Although the use of one proxy object and two proxy objects are described, it is noted that three or more proxy objects may be used.
- the external agent 202 is shown as a remote object, it is noted that the external agent 202 may be included within the computer system 200 . As long as the external agent 202 can communicate with the proxy object 204 , the systems and methods can operate as described herein.
- the object 206 may conform to the Common Object Model (COM) standard.
- COM Common Object Model
- the object 206 is an aggregatable object. Aggregation is a way for a first COM object to reuse a second COM object by directly exposing interfaces of the second object to a client (i.e., an application) without wrapping the interfaces.
- client i.e., an application
- the systems and methods described herein operate by the proxy object 204 obtaining one or more interfaces (not shown) of the object 206 and exposing the interface(s) to the application 208 .
- a remote procedure call (RPC) channel 228 is included in the proxy object 204 .
- the RPC 228 enables the external agent 202 to communicate directly with the proxy object 204 .
- the RPC 228 will be discussed in greater detail below.
- the external agent 202 may also include an RPC (not shown) that communicates with the RPC 228 of the proxy object 204 .
- a benefit of the aggregation is that the proxy object 204 can monitor or control every aspect of the object 206 (method, interface, event, etc.). If the object 206 is procedurally destroyed by the application 208 , the proxy object 204 receives notification before the object 206 is destroyed so that the proxy object 204 can release any reference on the object 206 and clean up properly. A beneficial effect of this property is that the proxy object 204 can perform a final inspection before it is destroyed.
- FIG. 3 is a flow diagram depicting a method for monitoring activity of an object with a proxy object.
- FIG. 3 continues reference will be made to the elements and reference numerals of FIG. 2 .
- the external agent 202 patches the registry 224 of the operating system 222 before the application 208 is launched.
- the patch includes redirecting a registry entry (not shown) for the object 206 in the library 226 to reference the proxy object 204 .
- the application 208 is then launched at block 302 .
- the application 208 requests the operating system 222 to create the object 206 at block 304 .
- the operating system 222 checks the registry 224 and is directed to find the object 206 at an address that actually points to the proxy object 204 .
- the proxy object 204 is loaded and directly requests the library 226 to create the object 206 (block 308 ).
- the library 226 creates the object 206 and returns the object 206 to the proxy object 204 .
- the proxy object 204 aggregates the object 206 and returns the object 206 to the operating system 222 .
- aggregating the object 206 merely entails the proxy object 204 exposing one or more object interfaces.
- the proxy object 204 obtains the interface(s) from the object 206 and exposes the same interfaces.
- the operating system 222 then returns the aggregated object 206 to the application 208 at block 314 .
- the data During execution of the application 208 , when data passes from the application 208 to the object 206 or from the object 206 to the application 208 , the data must pass through the proxy object 204 . This provides an opportunity to monitor the data and, hence, the activity of the object 206 and the application's control of the object 206 .
- the external agent 202 is used to control the monitoring of the data passed through the proxy object 204 .
- proxy object 204 is a COM object
- a convenient way to facilitate communication between the external agent 202 and the proxy object 204 is through the remote procedure call (RPC) channel 228 included in the proxy object 204 .
- the monitoring may be performed by static code contained within the proxy object 204 .
- RPC 228 allows the data to be monitored locally or from a remote location. Also, the instances that are monitored and the conditions of the monitoring may be altered as needed.
- FIG. 4 is a block diagram depicting a specific implementation of the claimed invention.
- the specific implementation shown in FIG. 4 is for monitoring graph data in a DIRECTSHOW application.
- Those skilled in the art will identify the implementation of the claimed features of the invention as described above in the following example.
- An executing external agent 400 patches a registry 402 in an operating system 404 for filter graph entries and registers filter graph proxy object container 406 (GSCore.dll) as an object factory for a filter graph 408 .
- the proxy object container is a dynamically linked library (DLL) file. It is noted, however, that the proxy object container does not necessarily have to be a DLL. It can be any container (e.g., an executable file, etc.) capable of encompassing one or more objects, including proxy objects.
- DLL dynamically linked library
- the external agent 400 includes CTrayIcon 410 and CGSCtrlApp 412 .
- Registry 402 entry CLSID_FilterGraph is mapped to CLSID_GraphSpy, and CLSID_FilterGraphNoThread is mapped to CLSID_GSpyNT.
- GSCore.dll 406 also includes DllMain 414 , CUtil 416 and DLLRegSvr 418 , all of which are helper objects that facilitate registration and operations of the proxy objects contained in GSCore.dll 406 .
- the operating system 404 loads GSCore.dll 406 by calling its DLL entry function, DllMain 414 .
- the operating system 404 checks the registry 402 and finds proxy object CGraphSpy 422 or CGSpyNT 424 .
- CGraphSpy 422 and CGSpyNT 424 are proxy objects, and each functions similarly to the proxy object 204 described in FIG. 2 .
- the application 420 is unaware that this action has taken place.
- Proxy object 422 or 424 loads the original filter graph object factory (included in quartz.dll 426 ) and requests it to create the filter graph 408 or filter graph no thread 409 .
- Proxy object CGraphSpy 422 and/or CGSpyNT 424 aggregates the filter graph 408 and/or filter graph no thread 409 before handing over to the application 420 .
- Proxy object CGraphSpy 408 and CGSpyNT 409 include an IUnknown handle to the filter graph 408 and/or filter graph no thread 409 that the application 420 is using and can dump the graph content at any time when requested by the external agent (GrfSpy.exe) 400 .
- GrfSpy.exe 400 is implemented as a tray applet, although this is specific implementation is not required.
- proxy object CGraphSpy 422 and CGSpyNT 424 are notified and can, as a result, perform appropriate cleanup actions.
- GSCore.dll 406 may be a COM object and, if so, includes a remote procedure call (RPC) channel 430 .
- RPC remote procedure call
- GrfSpy.exe 400 also includes an RPC 430 and GrfSpy.exe 400 and GSCore.dll 406 communicate via the RPCs 430 .
- FIG. 5 shows components of typical example of such a computer, referred by to reference numeral 500 .
- the components shown in FIG. 5 are only examples, and are not intended to suggest any limitation as to the scope of the functionality of the invention; the invention is not necessarily dependent on the features shown in FIG. 5 .
- various different general purpose or special purpose computing system configurations can be used.
- Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
- program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Tasks might also be performed by remote processing devices that are linked through a communications network.
- program modules may be located in both local and remote computer storage media.
- the instructions and/or program modules are stored at different times in the various computer-readable media that are either part of the computer or that can be read by the computer.
- Programs are typically distributed, for example, on floppy disks, CD-ROMs, DVD, or some form of communication media such as a modulated signal. From there, they are installed or loaded into the secondary memory of a computer. At execution, they are loaded at least partially into the computer's primary electronic memory.
- the invention described herein includes these and other various types of computer-readable media when such media contain instructions programs, and/or modules for implementing the steps described below in conjunction with a microprocessor or other data processors.
- the invention also includes the computer itself when programmed according to the methods and techniques described below.
- programs and other executable program components such as the operating system are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computer, and are executed by the data processor(s) of the computer.
- the components of computer 500 may include, but are not limited to, a processing unit 520 , a system memory 530 , and a system bus 521 that couples various system components including the system memory to the processing unit 520 .
- the system bus 521 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
- bus architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISAA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus also known as the Mezzanine bus.
- Computer 500 typically includes a variety of computer-readable media.
- Computer-readable media can be any available media that can be accessed by computer 500 and includes both volatile and nonvolatile media, removable and non-removable media.
- Computer-readable media may comprise computer storage media and communication media.
- Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data.
- Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 510 .
- Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
- modulated data signal means a signal that has one or more if its characteristics set or changed in such a manner as to encode information in the signal.
- communication media includes wired media such as a wired network or direct-wired connection and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
- the system memory 530 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 531 and random access memory (RAM) 532 .
- ROM read only memory
- RAM random access memory
- BIOS basic input/output system
- RAM 532 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 520 .
- FIG. 5 illustrates operating system 534 , application programs 535 , other program modules 536 , and program data 537 .
- the computer 500 may also include other removable/non-removable, volatile/nonvolatile computer storage media.
- FIG. 5 illustrates a hard disk drive 541 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 551 that reads from or writes to a removable, nonvolatile magnetic disk 552 , and an optical disk drive 555 that reads from or writes to a removable, nonvolatile optical disk 556 such as a CD ROM or other optical media.
- removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like.
- the hard disk drive 541 is typically connected to the system bus 521 through a non-removable memory interface such as interface 540
- magnetic disk drive 551 and optical disk drive 555 are typically connected to the system bus 521 by a removable memory interface such as interface 550 .
- the drives and their associated computer storage media discussed above and illustrated in FIG. 5 provide storage of computer-readable instructions, data structures, program modules, and other data for computer 500 .
- hard disk drive 541 is illustrated as storing operating system 544 , application programs 545 , other program modules 546 , and program data 547 .
- operating system 544 application programs 545 , other program modules 546 , and program data 547 are given different numbers here to illustrate that, at a minimum, they are different copies.
- a user may enter commands and information into the computer 500 through input devices such as a keyboard 562 and pointing device 561 , commonly referred to as a mouse, trackball, or touch pad.
- Other input devices may include a microphone, joystick, game pad, satellite dish, scanner, or the like.
- These and other input devices are often connected to the processing unit 520 through a user input interface 560 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port, or a universal serial bus (USB).
- a monitor 591 or other type of display device is also connected to the system bus 521 via an interface, such as a video interface 590 .
- computers may also include other peripheral output devices such as speakers 597 and printer 596 , which may be connected through an output peripheral interface 595 .
- the computer may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 580 .
- the remote computer 580 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to computer 500 , although only a memory storage device 581 has been illustrated in FIG. 5 .
- the logical connections depicted in FIG. 5 include a local area network (LAN) 571 and a wide area network (WAN) 573 , but may also include other networks.
- LAN local area network
- WAN wide area network
- Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.
- the computer 500 When used in a LAN networking environment, the computer 500 is connected to the LAN 571 through a network interface or adapter 570 .
- the computer 500 When used in a WAN networking environment, the computer 500 typically includes a modem 572 or other means for establishing communications over the WAN 573 , such as the Internet.
- the modem 572 which may be internal or external, may be connected to the system bus 521 via the user input interface 560 , or other appropriate mechanism.
- program modules depicted relative to the computer 500 may be stored in the remote memory storage device.
- FIG. 5 illustrates remote application programs 585 as residing on memory device 581 . It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
- the systems and methods as described thus provide a way to monitor object activity through an external agent utilizing one or more proxy objects.
- a problem identified in an application using the object may be easily debugged by analyzing monitored data.
- the changes made to accommodate the monitoring are transparent to the application using the object, the object and the operating system hosting the application.
Abstract
Systems and methods are described for monitoring the activity of an object to aid in debugging a problem with an application using the object. An operating system registry is altered to reference a proxy object when the application attempts to reference the object. The proxy object exposes an interface exposed by the object. Communications passing between the application and the object can be monitored in the proxy object. The proxy object can be monitored locally or remotely through a remote procedure channel.
Description
- This application is a continuation of and claims priority to U.S. patent application Ser. No. 10/105,066, filed Mar. 22, 2002, the disclosure of which is incorporated by reference herein.
- The systems and methods described herein relate to monitoring and debugging objects. More particularly, the described invention relates to systems and methods for monitoring activity of an object using a proxy object to debug a problem detected in the object.
- With some particular applications, it may be difficult to debug one or more problems that are detected when the application is executed. This problem may be compounded when the application is user-configurable as it is difficult to determine if the problem lies with the application itself, with a user's configuration of the application, or with the application's environment, i.e., the operating system on which the application is running.
- A typical way to debug an application is to install one or more special debugging files and activate debug logging while the application is executing so that data is collected in a log file. The log file can then be analyzed to identify the problem. This method can be time consuming and unreliable, especially if the identified problem only shows up in a particular environment. It is not uncommon that a developer trying to debug a problem is not associated with the users who have experienced the problem. The developer may have difficulty conceiving certain configuration aspects that are utilized by the users in particular environment configurations.
- For example, a software package called DIRECTSHOW produced by MICROSOFT CORP. utilizes multiple user-configurable filters that are collectively referred to as a filter graph. If users of a DIRECTSHOW application experiences problems with the application, they typically rely on developers from MICROSOFT CORP. to identify the problem and provide a solution to the problem.
- As it turns out, it is very difficult to determine which DIRECTSHOW filters are being used in the filter graph, how the filters communicate (or connect) with each other, and how the filter graph changes during the course of the application's lifetime. If such information could be collected quickly from an object within the application that controls filters used in the application, the developer would be better equipped to provide a clear solution to the problem.
- Systems and methods are described for monitoring activity of an object to debug a problem detected in the object. A proxy object is created that is called in place of the monitored object. This is done by modifying a registry entry in an operating system that controls execution of the application.
- The proxy object processes the information it receives in the call and, in turn, calls the monitored object, passing in the same information that was passed to the proxy object when the proxy object was called. A remote procedure call (RPC) channel in the proxy object is used to monitor the activity of the object. At any time, information about the activity of the object can be output to a file, a display, a printer, etc. The information may be output through the RPC channel to a remote location, so a developer can debug an application from a remote site.
- The existence and use of a proxy object as described herein is transparent to the monitored object, the application using the monitored object, and the operating system that controls the execution of the application.
- A more complete understanding of exemplary methods and arrangements of the present invention may be had by reference to the following detailed description when taken in conjunction with the accompanying drawings wherein:
-
FIG. 1 is a block diagram depicting a prior art method that an application uses to create and use an object. -
FIG. 2 is a block diagram of a computer system configured to allow an external agent to utilize a proxy object to monitor activity of an object used by an application. -
FIG. 3 is a flow diagram depicting a method for monitoring activity of an object with a proxy object. -
FIG. 4 is a block diagram depicting a particular implementation of the present invention. -
FIG. 5 is a diagram of an exemplary system on which the present invention may be implemented. - This invention concerns a systems and methods for monitoring object activity through an external agent using a proxy object. The invention described herein may be used to debug a problem in an application that utilizes the monitored object. An application using the present invention may be used in conjunction with one or more other applications to locally or remotely monitor object activity utilizing a proxy object. The present invention is may at times be described according to a particular implementation. However, it is noted that the features described herein may be applied to any computer system or application that utilizes an operating system registry or middle agent to create and load an object.
- Computer-Executable Instructions/Modules
- The invention is illustrated in the drawings as being implemented in a suitable computing environment. Although not required, the invention is described in the general context of computer-executable instructions, such as program modules, to be executed by a computing device, such as a personal computer or a hand-held computer or electronic device. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
- Prior Art
-
FIG. 1 is a block diagram depicting a prior art method that anapplication 100 uses to create and utilize anobject 102. Theapplication 100 sends a request to an operating system 104 for the operating system 104 to create theobject 102. The operating system 104 checks aregistry 106 in the operating system 104 to find alibrary 108 in which theobject 102 resides. If thelibrary 108 has been loaded and has registered with the operating system 104, then theregistry 106 will have an entry for thelibrary 108. If thelibrary 108 is identified by the operating system 104, the operating system 104 requests thelibrary 108 to create theobject 102. When theobject 102 is created, it is returned to theapplication 100 and theapplication 100 is then able to utilize theobject 102 during execution of theapplication 100. - Overview
- The method described above is the basic method that is altered in the present invention to utilize a proxy object to monitor the activity of the
object 102. Although a proxy object is utilized in the present invention, the basic activities of theapplication 100, theoperating system 106 and theobject 102 remain unaffected. As used herein, the basic activities of the application, the operating system and the object includes the communication interactions between the application, the operating system and/or the object. Therefore, those components function similarly as they have been described above. - Remote Proxy Object Monitoring System
-
FIG. 2 is a block diagram acomputer system 200 configured to allow an external agent 202 to utilize aproxy object 204 to monitor activity of anobject 206 used by anapplication 208. Thecomputer system 200 includesmemory 210, aprocessor 212 and an input/output (I/O)module 214. The I/O module 214 is used to facilitate communications between thecomputer system 200 and external hardware (not shown) connected to thecomputer system 200. - The
computer system 200 also includes acommunications module 216, adisplay 218 andvarious hardware components 220 that are typically included in computer systems. Thecommunications module 216 is a network card, a modem, or some other component that facilitates communication with remote systems. In the present example described herein, thecommunications module 216 is used to allow the external agent 202 to communicate with thecomputer system 200 and its components. - The
computer system 200 also includes theapplication 208 that executes in conjunction with theoperating system 222 that includes aregistry 224. Alibrary 226 is shown that includes theobject 206 and has registered with theoperating system 222. Theproxy object 204 marshals data transmitted between theobject 206 and theapplication 208. As data passes to and from theproxy object 204, the data may be monitored. The external agent 202 (e.g., an applet) is configured to redirect theregistry 224 to theproxy object 204 and to control theproxy object 204. - It is noted that there may be more than one
proxy object 204. In such a case, the proxy objects may be included in a container, such as a dynamically linked library, an executable, etc., for convenience purposes, although it is not necessary. A specific implementation using two proxy objects is described in detail below. Although the use of one proxy object and two proxy objects are described, it is noted that three or more proxy objects may be used. - Although the external agent 202 is shown as a remote object, it is noted that the external agent 202 may be included within the
computer system 200. As long as the external agent 202 can communicate with theproxy object 204, the systems and methods can operate as described herein. - Although not required, the
object 206 may conform to the Common Object Model (COM) standard. In COM terms, theobject 206 is an aggregatable object. Aggregation is a way for a first COM object to reuse a second COM object by directly exposing interfaces of the second object to a client (i.e., an application) without wrapping the interfaces. As will be discussed in greater detail, below, the systems and methods described herein operate by theproxy object 204 obtaining one or more interfaces (not shown) of theobject 206 and exposing the interface(s) to theapplication 208. - A remote procedure call (RPC)
channel 228 is included in theproxy object 204. TheRPC 228 enables the external agent 202 to communicate directly with theproxy object 204. TheRPC 228 will be discussed in greater detail below. Although not shown in this example, the external agent 202 may also include an RPC (not shown) that communicates with theRPC 228 of theproxy object 204. - A benefit of the aggregation is that the
proxy object 204 can monitor or control every aspect of the object 206 (method, interface, event, etc.). If theobject 206 is procedurally destroyed by theapplication 208, theproxy object 204 receives notification before theobject 206 is destroyed so that theproxy object 204 can release any reference on theobject 206 and clean up properly. A beneficial effect of this property is that theproxy object 204 can perform a final inspection before it is destroyed. - As long as the properties attributed to aggregation as described above are exhibited by the
object 206, then the systems and methods as described herein will function optimally. Further discussion of the elements shown inFIG. 2 will be described below with reference to the flow diagram ofFIG. 3 . - Remote Proxy Object Monitoring Methodology
-
FIG. 3 is a flow diagram depicting a method for monitoring activity of an object with a proxy object. In the discussion ofFIG. 3 , continuing reference will be made to the elements and reference numerals ofFIG. 2 . - At
block 300, the external agent 202 patches theregistry 224 of theoperating system 222 before theapplication 208 is launched. The patch includes redirecting a registry entry (not shown) for theobject 206 in thelibrary 226 to reference theproxy object 204. Theapplication 208 is then launched atblock 302. - The
application 208 requests theoperating system 222 to create theobject 206 atblock 304. Atblock 306, theoperating system 222 checks theregistry 224 and is directed to find theobject 206 at an address that actually points to theproxy object 204. Theproxy object 204 is loaded and directly requests thelibrary 226 to create the object 206 (block 308). Atblock 310, thelibrary 226 creates theobject 206 and returns theobject 206 to theproxy object 204. - At
block 312, theproxy object 204 aggregates theobject 206 and returns theobject 206 to theoperating system 222. As described above, aggregating theobject 206 merely entails theproxy object 204 exposing one or more object interfaces. Theproxy object 204 obtains the interface(s) from theobject 206 and exposes the same interfaces. Theoperating system 222 then returns the aggregatedobject 206 to theapplication 208 atblock 314. - During execution of the
application 208, when data passes from theapplication 208 to theobject 206 or from theobject 206 to theapplication 208, the data must pass through theproxy object 204. This provides an opportunity to monitor the data and, hence, the activity of theobject 206 and the application's control of theobject 206. The external agent 202 is used to control the monitoring of the data passed through theproxy object 204. - If the
proxy object 204 is a COM object, then a convenient way to facilitate communication between the external agent 202 and theproxy object 204 is through the remote procedure call (RPC)channel 228 included in theproxy object 204. Alternatively, the monitoring may be performed by static code contained within theproxy object 204. However, use of theRPC 228 allows the data to be monitored locally or from a remote location. Also, the instances that are monitored and the conditions of the monitoring may be altered as needed. - Remote Proxy Object Monitoring—Specific Implementation
-
FIG. 4 is a block diagram depicting a specific implementation of the claimed invention. The specific implementation shown inFIG. 4 is for monitoring graph data in a DIRECTSHOW application. Those skilled in the art will identify the implementation of the claimed features of the invention as described above in the following example. - An executing external agent 400 (grfspy.exe) patches a
registry 402 in anoperating system 404 for filter graph entries and registers filter graph proxy object container 406 (GSCore.dll) as an object factory for afilter graph 408. In the present example, the proxy object container is a dynamically linked library (DLL) file. It is noted, however, that the proxy object container does not necessarily have to be a DLL. It can be any container (e.g., an executable file, etc.) capable of encompassing one or more objects, including proxy objects. - The
external agent 400 includesCTrayIcon 410 andCGSCtrlApp 412.Registry 402 entry CLSID_FilterGraph is mapped to CLSID_GraphSpy, and CLSID_FilterGraphNoThread is mapped to CLSID_GSpyNT. GSCore.dll 406 also includesDllMain 414,CUtil 416 andDLLRegSvr 418, all of which are helper objects that facilitate registration and operations of the proxy objects contained inGSCore.dll 406. - When an application 420 attempts to create a DIRECTSHOW filter graph, the
operating system 404 loads GSCore.dll 406 by calling its DLL entry function,DllMain 414. When the application 420 requests to create thefilter graph 408 and/or filter graph no thread 409, theoperating system 404 checks theregistry 402 and findsproxy object CGraphSpy 422 orCGSpyNT 424. In this example,CGraphSpy 422 andCGSpyNT 424 are proxy objects, and each functions similarly to theproxy object 204 described inFIG. 2 . The application 420 is unaware that this action has taken place.Proxy object filter graph 408 or filter graph no thread 409.Proxy object CGraphSpy 422 and/orCGSpyNT 424 aggregates thefilter graph 408 and/or filter graph no thread 409 before handing over to the application 420. -
Proxy object CGraphSpy 408 and CGSpyNT 409 include an IUnknown handle to thefilter graph 408 and/or filter graph no thread 409 that the application 420 is using and can dump the graph content at any time when requested by the external agent (GrfSpy.exe) 400. In this example, it is noted that GrfSpy.exe 400 is implemented as a tray applet, although this is specific implementation is not required. - When the application 420 shuts down the
filter graph 408 and/or filter graph no thread 409,proxy object CGraphSpy 422 andCGSpyNT 424 are notified and can, as a result, perform appropriate cleanup actions. - As noted previously, GSCore.dll 406 may be a COM object and, if so, includes a remote procedure call (RPC)
channel 430. In this example,GrfSpy.exe 400 also includes anRPC 430 and GrfSpy.exe 400 andGSCore.dll 406 communicate via theRPCs 430. - The various components and functionality described herein are implemented with a number of individual computers.
FIG. 5 shows components of typical example of such a computer, referred by toreference numeral 500. The components shown inFIG. 5 are only examples, and are not intended to suggest any limitation as to the scope of the functionality of the invention; the invention is not necessarily dependent on the features shown inFIG. 5 . - Generally, various different general purpose or special purpose computing system configurations can be used. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
- The functionality of the computers is embodied in many cases by computer-executable instructions, such as program modules, that are executed by the computers. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Tasks might also be performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media.
- The instructions and/or program modules are stored at different times in the various computer-readable media that are either part of the computer or that can be read by the computer. Programs are typically distributed, for example, on floppy disks, CD-ROMs, DVD, or some form of communication media such as a modulated signal. From there, they are installed or loaded into the secondary memory of a computer. At execution, they are loaded at least partially into the computer's primary electronic memory. The invention described herein includes these and other various types of computer-readable media when such media contain instructions programs, and/or modules for implementing the steps described below in conjunction with a microprocessor or other data processors. The invention also includes the computer itself when programmed according to the methods and techniques described below.
- For purposes of illustration, programs and other executable program components such as the operating system are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computer, and are executed by the data processor(s) of the computer.
- With reference to
FIG. 5 , the components ofcomputer 500 may include, but are not limited to, a processing unit 520, asystem memory 530, and asystem bus 521 that couples various system components including the system memory to the processing unit 520. Thesystem bus 521 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISAA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus also known as the Mezzanine bus. -
Computer 500 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed bycomputer 500 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. “Computer storage media” includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed bycomputer 510. Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more if its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media. - The
system memory 530 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 531 and random access memory (RAM) 532. A basic input/output system 533 (BIOS), containing the basic routines that help to transfer information between elements withincomputer 500, such as during start-up, is typically stored in ROM 531.RAM 532 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 520. By way of example, and not limitation,FIG. 5 illustratesoperating system 534, application programs 535,other program modules 536, and program data 537. - The
computer 500 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,FIG. 5 illustrates a hard disk drive 541 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 551 that reads from or writes to a removable, nonvolatilemagnetic disk 552, and an optical disk drive 555 that reads from or writes to a removable, nonvolatileoptical disk 556 such as a CD ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. The hard disk drive 541 is typically connected to thesystem bus 521 through a non-removable memory interface such asinterface 540, and magnetic disk drive 551 and optical disk drive 555 are typically connected to thesystem bus 521 by a removable memory interface such asinterface 550. - The drives and their associated computer storage media discussed above and illustrated in
FIG. 5 provide storage of computer-readable instructions, data structures, program modules, and other data forcomputer 500. InFIG. 5 , for example, hard disk drive 541 is illustrated as storingoperating system 544, application programs 545,other program modules 546, and program data 547. Note that these components can either be the same as or different fromoperating system 534, application programs 535,other program modules 536, and program data 537.Operating system 544, application programs 545,other program modules 546, and program data 547 are given different numbers here to illustrate that, at a minimum, they are different copies. A user may enter commands and information into thecomputer 500 through input devices such as a keyboard 562 and pointing device 561, commonly referred to as a mouse, trackball, or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 520 through a user input interface 560 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port, or a universal serial bus (USB). A monitor 591 or other type of display device is also connected to thesystem bus 521 via an interface, such as a video interface 590. In addition to the monitor, computers may also include other peripheral output devices such as speakers 597 and printer 596, which may be connected through an outputperipheral interface 595. - The computer may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 580. The remote computer 580 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to
computer 500, although only a memory storage device 581 has been illustrated inFIG. 5 . The logical connections depicted inFIG. 5 include a local area network (LAN) 571 and a wide area network (WAN) 573, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. - When used in a LAN networking environment, the
computer 500 is connected to the LAN 571 through a network interface or adapter 570. When used in a WAN networking environment, thecomputer 500 typically includes a modem 572 or other means for establishing communications over the WAN 573, such as the Internet. The modem 572, which may be internal or external, may be connected to thesystem bus 521 via the user input interface 560, or other appropriate mechanism. In a networked environment, program modules depicted relative to thecomputer 500, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,FIG. 5 illustrates remote application programs 585 as residing on memory device 581. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used. - The systems and methods as described thus provide a way to monitor object activity through an external agent utilizing one or more proxy objects. As a result, a problem identified in an application using the object may be easily debugged by analyzing monitored data. The changes made to accommodate the monitoring are transparent to the application using the object, the object and the operating system hosting the application.
- Although details of specific implementations and embodiments are described above, such details are intended to satisfy statutory disclosure obligations rather than to limit the scope of the following claims. Thus, the invention as defined by the claims is not limited to the specific features described above. Rather, the invention is claimed in any of its forms or modifications that fall within the proper scope of the appended claims, appropriately interpreted in accordance with the doctrine of equivalents.
Claims (26)
1. A method comprising the steps of:
altering an operating system registry to redirect application data sent from an application to an object;
receiving the redirected application data sent from the application to the object;
forwarding the redirected application data to the object;
receiving object data sent from the object to the application;
forwarding the object data to the application; and
outputting the application data and the object data to an external agent.
2. A method as recited in claim 1 , wherein the outputting step further comprises the external agent reading the application data and the object data.
3. A method as recited in claim 1 , wherein the outputting step further comprises outputting the application data and the object data via remote procedures channel (RPC).
4. A method as recited in claim 1 , wherein the external agent is a common object model (COM) object.
5. A method as recited in claim 1 , wherein the outputting further comprises outputting the application data and the object data to a remote location.
6. A method as recited in claim 1 , wherein:
the steps are performed in a computer system; and
the outputting further comprises outputting the application data and the object data to an object within the computer system.
7. One or more computer-readable media containing computer-executable instructions that, when executed on a computer, perform acts comprising:
configuring a proxy object to intercept data that passes to and from the object and to and from an application that uses the object;
configuring an operating system registry that handles activity between the application and the object to reference the proxy object when the application references the object; and
monitoring data that passes to and from the proxy object.
8. One or more media as recited in claim 7 , wherein:
the proxy object further comprises a common object model (COM) object having a remote procedures channel; and
the monitoring data further comprises remotely monitoring the data via the remote procedures channel.
9. One or more media as recited in claim 7 , wherein the configuring the proxy object further comprises configuring the proxy object to expose an object interface for the application to utilize, the object interface being an interface exposed by the object.
10. One or more media as recited in claim 7 , further comprising creating the proxy object.
11. One or more media as recited in claim 7 , wherein the configuring the operating system registry occurs prior to the application being launched.
12. One or more media as recited in claim 7 , wherein the object further comprises an aggregatable object.
13. One or more media as recited in claim 7 , wherein the object further comprises a COM object.
14. One or more media as recited in claim 7 , wherein the monitoring data further comprises storing the data on one or more computer-readable media.
15. One or more media as recited in claim 7 , wherein the monitoring data further comprises printing the data.
16. One or more media as recited in claim 7 , wherein the monitoring data further comprises displaying the data on at least one electronic display.
17. A system for monitoring activity of an object, the system comprising means for performing functions, the functions comprising:
altering an operating system registry to reference a proxy object so that when an application references the object, the proxy object is referenced instead;
monitoring data transmitted to and from the proxy object; and
wherein the proxy object receives application data sent from the application to the object, forwards the application data to the object, receives object data sent from the object to the application, and forwards the object data to the application.
18. A system as recited in claim 17 , wherein the functions further comprise creating the proxy object.
19. A system as recited in claim 17 , wherein the monitoring further comprises monitoring the data transmitted to and from the proxy object further comprises remotely monitoring the data transmitted to and from the proxy object.
20. The method as recited in claim 17 , wherein the proxy object further comprises a remote procedure channel (RPC) through which the data is monitored.
21. The method as recited in claim 17 , wherein the object further comprises an aggregatable object.
22. A system as recited in claim 17 , wherein the object further comprises a common object model (COM) object.
23. A system as recited in claim 17 , wherein the monitoring the data further comprises storing the data on one or more computer-readable media.
24. A system as recited in claim 17 , wherein the monitoring the data further comprises printing the data.
25. A system as recited in claim 17 , wherein the monitoring the data further comprises displaying the data on an electronic display.
26. A system as recited in claim 17 , wherein the proxy object does not alter normal activity of the application or the object.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/016,652 US20050114738A1 (en) | 2002-03-22 | 2004-12-17 | Systems and methods for monitoring object activity through an external agent using a proxy object |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/105,066 US6892326B2 (en) | 2002-03-22 | 2002-03-22 | Systems and methods for monitoring object activity through an external agent using a proxy object |
US11/016,652 US20050114738A1 (en) | 2002-03-22 | 2004-12-17 | Systems and methods for monitoring object activity through an external agent using a proxy object |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/105,066 Continuation US6892326B2 (en) | 2002-03-22 | 2002-03-22 | Systems and methods for monitoring object activity through an external agent using a proxy object |
Publications (1)
Publication Number | Publication Date |
---|---|
US20050114738A1 true US20050114738A1 (en) | 2005-05-26 |
Family
ID=28040775
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/105,066 Expired - Fee Related US6892326B2 (en) | 2002-03-22 | 2002-03-22 | Systems and methods for monitoring object activity through an external agent using a proxy object |
US11/016,652 Abandoned US20050114738A1 (en) | 2002-03-22 | 2004-12-17 | Systems and methods for monitoring object activity through an external agent using a proxy object |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/105,066 Expired - Fee Related US6892326B2 (en) | 2002-03-22 | 2002-03-22 | Systems and methods for monitoring object activity through an external agent using a proxy object |
Country Status (1)
Country | Link |
---|---|
US (2) | US6892326B2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060150017A1 (en) * | 2004-12-16 | 2006-07-06 | Makoto Mihara | Information processing apparatus, information processing method, computer program, and storage medium |
US20080295077A1 (en) * | 2007-04-26 | 2008-11-27 | Hewlett-Packard Development Company, L.P. | Method and system for remotely debugging a hung or crashed computing system |
US7502967B1 (en) * | 2005-10-31 | 2009-03-10 | Hewlett-Packard Development Company, L.P. | Identifying an object in a data file that causes an error in an application |
US7886279B2 (en) | 2004-12-16 | 2011-02-08 | Canon Kabushiki Kaisha | Information processing apparatus, control method therefor, computer program, and storage medium |
US8966448B2 (en) * | 2005-05-10 | 2015-02-24 | Novell, Inc. | Techniques for debugging an application |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203696B2 (en) * | 2003-08-29 | 2007-04-10 | Microsoft Corporation | Dynamic registry partitioning |
US20070297349A1 (en) * | 2003-11-28 | 2007-12-27 | Ofir Arkin | Method and System for Collecting Information Relating to a Communication Network |
US7308542B1 (en) * | 2004-02-19 | 2007-12-11 | Microsoft Corporation | Data integrity protection for stored data |
US7650593B2 (en) * | 2004-03-25 | 2010-01-19 | Microsoft Corporation | Proxy objects for display |
US7685575B1 (en) * | 2004-06-08 | 2010-03-23 | Sun Microsystems, Inc. | Method and apparatus for analyzing an application |
US20060129880A1 (en) * | 2004-11-26 | 2006-06-15 | Mauro Arcese | Method and system for injecting faults into a software application |
US20110067007A1 (en) * | 2009-09-14 | 2011-03-17 | Red Hat, Inc. | Automatic thread dumping |
CN110083457A (en) * | 2018-01-26 | 2019-08-02 | 北京京东尚科信息技术有限公司 | A kind of data capture method, device and data analysing method, device |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5884316A (en) * | 1996-11-19 | 1999-03-16 | Microsoft Corporation | Implicit session context system with object state cache |
US6085030A (en) * | 1997-05-02 | 2000-07-04 | Novell, Inc. | Network component server |
US20020199035A1 (en) * | 1996-06-24 | 2002-12-26 | Erik B. Christensen | Method and system for remote automation of object oriented applications |
US6748555B1 (en) * | 1999-09-09 | 2004-06-08 | Microsoft Corporation | Object-based software management |
-
2002
- 2002-03-22 US US10/105,066 patent/US6892326B2/en not_active Expired - Fee Related
-
2004
- 2004-12-17 US US11/016,652 patent/US20050114738A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020199035A1 (en) * | 1996-06-24 | 2002-12-26 | Erik B. Christensen | Method and system for remote automation of object oriented applications |
US5884316A (en) * | 1996-11-19 | 1999-03-16 | Microsoft Corporation | Implicit session context system with object state cache |
US6085030A (en) * | 1997-05-02 | 2000-07-04 | Novell, Inc. | Network component server |
US6748555B1 (en) * | 1999-09-09 | 2004-06-08 | Microsoft Corporation | Object-based software management |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060150017A1 (en) * | 2004-12-16 | 2006-07-06 | Makoto Mihara | Information processing apparatus, information processing method, computer program, and storage medium |
US7519868B2 (en) * | 2004-12-16 | 2009-04-14 | Canon Kabushiki Kaisha | Information processing apparatus, information processing method, computer program, and storage medium |
US7886279B2 (en) | 2004-12-16 | 2011-02-08 | Canon Kabushiki Kaisha | Information processing apparatus, control method therefor, computer program, and storage medium |
US8966448B2 (en) * | 2005-05-10 | 2015-02-24 | Novell, Inc. | Techniques for debugging an application |
US7502967B1 (en) * | 2005-10-31 | 2009-03-10 | Hewlett-Packard Development Company, L.P. | Identifying an object in a data file that causes an error in an application |
US20080295077A1 (en) * | 2007-04-26 | 2008-11-27 | Hewlett-Packard Development Company, L.P. | Method and system for remotely debugging a hung or crashed computing system |
US8069371B2 (en) * | 2007-04-26 | 2011-11-29 | Hewlett-Packard Development Company, L.P. | Method and system for remotely debugging a hung or crashed computing system |
Also Published As
Publication number | Publication date |
---|---|
US6892326B2 (en) | 2005-05-10 |
US20030182598A1 (en) | 2003-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ghormley et al. | SLIC: An Extensibility System for Commodity Operating Systems. | |
AU2004218703B2 (en) | Security-related programming interface | |
US8352915B2 (en) | Organization of application state and configuration settings | |
US8516486B2 (en) | Loading applications in non-designated environments | |
US6546553B1 (en) | Service installation on a base function and provision of a pass function with a service-free base function semantic | |
US7822840B2 (en) | Method and apparatus for dynamic web service client application update | |
US7721272B2 (en) | Tracking file access patterns during a software build | |
US5257381A (en) | Method of intercepting a global function of a network operating system and calling a monitoring function | |
US8539497B2 (en) | Method for organizing software so the set of extensions for an extendable application can be run securely | |
US8429648B2 (en) | Method and apparatus to service a software generated trap received by a virtual machine monitor | |
US6892326B2 (en) | Systems and methods for monitoring object activity through an external agent using a proxy object | |
US7886193B2 (en) | System and methods for processing software authorization and error feedback | |
EP1622062A2 (en) | Framework for a security system | |
WO2008134162A1 (en) | Dynamically loading scripts | |
JP2005011342A (en) | Debug of break point in pluggable component | |
MX2007011026A (en) | System and method for foreign code detection. | |
US20060288085A1 (en) | Modular server architecture for multi-environment HTTP request processing | |
JP2006164265A (en) | Enablement of resource sharing between subsystems | |
JP2006164266A (en) | Improvement in performance of operating system | |
US20080320146A1 (en) | Establishing interaction between a process and a server process | |
US7591021B2 (en) | Object model document for obfuscating object model therein | |
US20060277527A1 (en) | Non-destructive debugging for add-ins | |
US6842893B1 (en) | Method for global breakout identification | |
US7882508B1 (en) | Tracing information flow using a signature | |
US6968556B1 (en) | Automatic message-based module invocation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034766/0001 Effective date: 20141014 |