11 Debugging an Application

This section describes a number of approaches to debugging your application including viewing Debug Mode, enabling SQL tracing, viewing page reports, and how to manually remove a control or a component to isolate a problem.

This section contains the following topics:

About Tuning Performance

For applications having a large number of concurrent users, maintaining optimal performance is critical. To optimize your application's performance, remember to utilize the following Oracle HTML DB features:

  • Use bind variables within your application whenever possible. You can reference session state values using bind variable syntax in SQL queries and application logic such as PL/SQL executed from processes and validations. Accessing session state using bind variables is the most efficient way to reference session state.

  • Include a #TIMING# substitution string in the region footer so that you can view the timing of each region.

Reviewing Session State

Many application are based on data contained within application controls. For example, buttons may display conditionally based on a value stored in session state. You can view current session state for your application by clicking the Session link on the Developer Toolbar.

Accessing Debug Mode

Viewing a page in Debug Mode is effective way to track what the HTML DB engine is doing as it renders a page. You access Debug mode by clicking the Debug link in the Developer Toolbar.

Debug Mode displays time codes that correspond to specific HTML DB engine actions. This can be useful if you want to determine when the engine is setting session state. The bottom of the page displays an augmented version of the Page Definition. In addition to enabling you to link to page and component attributes, you can view additional details about item names and computation and processing points. To exit Debug mode, click No Debug in the Developer Toolbar.

You can also use f?p syntax run an application in Debug mode. Simply call the page and set the Debug argument to YES. For example:


Enabling SQL Tracing and Using TKPROF

Tracing your session can be a very effective way to debug an application. From a database perspective, each page request is a single database session. If you enable SQL tracing, then Oracle HTML DB creates a temporary file you can then analyze using the TKPROF utility.

You enable SQL tracing in Oracle HTML DB by using f?p syntax to set the argument p_trace=YES. For example, to trace the display of page 1 in application 100 you would use the syntax:


To use the TKPROF utility:

  • Navigate to the directory in which the trace file is created.

  • Type the following to view instructions about using TKPROF utility:

    tkprof help=yes

See Also:

Oracle Database Performance Tuning Guide for more information on using the TKPROF program or contact your database administrator

Monitoring Application and Page Resource Use

Oracle HTML DB facilitates the monitoring of resources used by applications and pages by calling the package DBMS_APPLICATION_INFO. Whenever the HTML DB engine renders or processes a page, the module is set to HTML DB and includes the application ID and page number. Once set, you can query the V$SESSION and V$SQLAREA views to monitor transactions.

Viewing Oracle HTML DB Reports

When isolating an issue within a page, it is important to clearly understand the functions it is performing. To accomplish this goal, Oracle HTML DB includes a number of page and application reports.

To view page reports:

  1. Navigate to the appropriate Page Definition. (See "Viewing a Page Definition".)

  2. Click one of the following buttons at the top of the Page Definition:

    • Event View links to a report that details currently defined page controls and processes.

    • Object References displays a list of database objects referenced by the current page.

    • History displays a history of recently changed pages.

To view application reports:

  1. Navigate to the Workspace home page.

  2. Select an application name from the Applications list.

  3. From the Tasks list, select View Application Reports.

    Application Reports page appears.

  4. Select a report to review.

Debugging Problematic SQL Queries

If your query does not seem to be running correctly, try running it in SQL Plus or in SQL Workshop. Either approach will test your query outside of the context of your application, making it easier to determine what the problem is.

Removing Controls and Components to Isolate a Problem

If you have problems running a page, try removing controls and components one at time. Using this approach, you can quickly determine which control or component may be the source of your problem. You can disable a control or component by selecting the conditional display attribute NEVER.

To remove a control or component using conditional attributes:

  1. Navigate to the appropriate Page Definition. (See "Viewing a Page Definition".)

  2. Select the name of the control or component you wish to disable.

    The appropriate attributes page appears.

  3. Scroll down to the Conditional Display attribute and select NEVER from the Condition Type list.

  4. Click Apply Changes and return to the Page Definition.

  5. Try running the page again.

  6. Continue to remove controls or components until the page runs correctly.