PATH  WebObjects 4.0 Documentation > What's New in WebObjects 4.0

Table of Contents Previous Section

Debugging

In WebObjects 4.0, you debug an application by launching it in the Project Builder launch panel. By default, the browser is launched automatically and shows the appropriate URL.

A new feature of WebObjects 4.0 allows you to debug applications on a machine that doesn't have a web server present. See "Serverless" Applications for more information.

WOApplication, WOComponent, and WODirectAction define a method named debugWithFormat: (debugString in Java). This method is similar to logWithFormat:/logString except that you can control whether it displays output with the WODebuggingEnabled user default option. If WODebuggingEnabled is YES, then the debugWithFormat: messages display their output. If WODebuggingEnabled is NO, the debugWithFormat: messages don't display their output. WODirectAction also defines logWithFormat:.

All dynamic elements and components now have a WODebug attribute that can be helpful when you are trying to locate unwanted behavior (and can also help you understand how non-synchronized components work). When WODebug is set to YES, it turns on a "verbose mode" for all dynamic associations for the element. This results in logs like the following being generated:

[NestedList:WXNestedList] (item: {label = Alpha.2.1; value = A.2.1; }) 
==> currentItem
[NestedList:WXNestedList] (index: 0) ==> currentIndex
[NestedList:WXNestedList] sublist <== (currentItem.sublist: *nil*)
[NestedList:WXNestedList] (item: {isNew = 1; label = Alpha.2.2; value = A.2.2; }) ==> currentItem
[NestedList:WXNestedList] (index: 1) ==> currentIndex
[NestedList:WXNestedList] sublist <== (currentItem.sublist: *nil*)
The format of these logs is controlled by two new methods on WOApplication that can be overridden to customize the log messages: logTakeValueForDeclarationNamed:type:bindingNamed:associationDescription:value: (logTakeValueForDeclarationNamed in Java), and logSetValueForDeclarationNamed:type:bindingNamed:associationDescription:value: (logSetValueForDeclarationNamed in Java).

Table of Contents Next Section