Debugging Quandis Business ObjectsTroubleshooting a QBO installation requires knowledge of five key debugging tools:
Debugging the BrowserQBO makes use of over 40,000 lines of javascript code (prior to minification), and about 10,000 lines of css code. The good news is that only about 1/3 of all that code is 'QBO' code; the remainder is off-the-shelf stuff that rarely contributes to problems, but you still need to be able to read through it. You are welcome to use any browser platform to debug. If you feel you wish to debug in IE, please spend 15 minutes debugging in IE 9 or earlier using their debugging tool, then spend 3 minutes debugging in Chrome, and you will reach the same conclusion that Microsoft's internal development teams reached: don't waste your time in IE. Firebug is a perfectly acceptable alternative to webkit's debugger. Some tips from the Quandis team with respect to the webkit debugger:
Debugging the Network![]()
Fiddler's Composer window allows you to simulate HTTP GETs and POSTs to a website. To effectively use this with QBO, do the following: ![]()
You can review a more robust tutorial on Fiddler's site. Debugging the ServerAll QBO developers should have a local QBO installation running under IIS on their development machine. It's fine to have this site using a connection string to a dev or uat database, but you need to have the server-side (C#) code running locally to effectively debug. If you encounter a server-side error, you need to know where to start debugging. Determine this from the stack trace found in the server-side error logs. In the stack trace below, note the following:
---------------------------------------- Timestamp: 3/4/2013 11:51:28 PM Activity: 00000000-0000-0000-0000-000000000000 Message: HandlingInstanceID: ea85ac7a-9feb-4197-87ee-49549498e9b4 An exception of type 'qbo.Exception.GeneralException' occurred and was caught. ------------------------------------------------------------------------------ 03/04/2013 18:51:28 Type : qbo.Exception.GeneralException, qbo.Exception, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Message : General Exception Source : Help link : Manager : Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionManagerImpl Data : System.Collections.ListDictionaryInternal TargetSite : HResult : -2146233088 ThrowException : True Stack Trace : The stack trace is unavailable. Additional Info: MachineName : MINBAR TimeStamp : 3/4/2013 11:51:28 PM FullName : Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=5.0.414.0, Culture=neutral, PublicKeyToken=null AppDomainName : /LM/W3SVC/1/ROOT-1-130069145369323941 ThreadIdentity : admin@quandis.com WindowsIdentity : IIS APPPOOL\DefaultAppPool Inner Exception --------------- Type : qbo.Exception.GeneralException, qbo.Exception, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Message : Error attempting to read the path '/Templates/Mortgage/CopyTest/CopyTest.Edit.xslt' in file object repository 'Template'. Source : qbo.Attachment Help link : Manager : Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionManagerImpl Data : System.Collections.ListDictionaryInternal TargetSite : qbo.Attachment.AttachmentInfo Read(System.IO.Stream, System.String) HResult : -2146233088 ThrowException : True Stack Trace : at qbo.Attachment.FileObjects.LocalFile.Read(Stream stream, String relativePath) in C:\Source\Trunk\qbo.3\qbo.Core\Application Tier\qbo.Attachment\FileObjects\LocalFile.cs:line 60 at qbo.Attachment.AttachmentObject.Read(Stream streamToWriteTo) in C:\Source\Trunk\qbo.3\qbo.Core\Application Tier\qbo.Attachment\Attachment.cs:line 435 at qbo.Attachment.AttachmentObject.ReadMemory() in C:\Source\Trunk\qbo.3\qbo.Core\Application Tier\qbo.Attachment\Attachment.cs:line 446 at qbo.Attachment.AttachmentObject.ReadXsl(XsltSettings settings) in C:\Source\Trunk\qbo.3\qbo.Core\Application Tier\qbo.Attachment\Attachment.cs:line 511 at qbo.Attachment.AttachmentObject.ReadXsl() in C:\Source\Trunk\qbo.3\qbo.Core\Application Tier\qbo.Attachment\Attachment.cs:line 500 at qbo.Decision.ImportFormTemplateObject.get_EditTransform() in C:\Source\Trunk\qbo.3\qbo.Core\Application Tier\qbo.Decision\ImportFormTemplate.cs:line 248 at qbo.DecisionWeb.ImportForm.RenderEdit(HttpContext context) in C:\Source\Trunk\qbo.3\qbo.Core\Web Tier\qbo.DecisionWeb\Decision\ImportForm.ashx.cs:line 152 at qbo.DecisionWeb.ImportForm.ProcessRequest(HttpContext context) in C:\Source\Trunk\qbo.3\qbo.Core\Web Tier\qbo.DecisionWeb\Decision\ImportForm.ashx.cs:line 60 Inner Exception --------------- Type : System.IO.DirectoryNotFoundException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Message : Could not find a part of the path 'C:\inetpub\local.quandis.net\Templates\Mortgage\CopyTest\CopyTest.Edit.xslt'. Source : mscorlib Help link : Data : System.Collections.ListDictionaryInternal TargetSite : Void WinIOError(Int32, System.String) HResult : -2147024893 Stack Trace : at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access) at qbo.Attachment.FileObjects.LocalFile.Read(Stream stream, String relativePath) in C:\Source\Trunk\qbo.3\qbo.Core\Application Tier\qbo.Attachment\FileObjects\LocalFile.cs:line 39 Category: General Priority: 0 EventId: 100 Severity: Error Title:Enterprise Library Exception Handling Machine: MINBAR App Domain: /LM/W3SVC/1/ROOT-1-130069145369323941 ProcessId: 5584 Process Name: c:\windows\system32\inetsrv\w3wp.exe Thread Name: Win32 ThreadId:7172 Extended Properties: ---------------------------------------- Debugging the DatabaseDebugging the database should be used when other technique fail. Profiling a server, particularly a PROD server, is 'expensive' in that the act of profiling can degrade the performance of the db all by itself. Thus, you should coordinate with a DBA or QBO architect if you need to profile a database for your debugging efforts. When profiling QBO3, consider:
Log FilesAll QBO errors are logged to the web server. QBO 3 logging uses the Microsoft Enterprise Library Logging sinks, including a rolling log file that is renamed each day. Some tips include:
|
Troubleshooting >