官术网_书友最值得收藏!

Debugging Zope exceptions with PDBDebug Mode

Whenever an exception is fired by some situation not foreseen during development, we can trace the exception in Zope logs or in the console itself. Many times during development, it's more useful to get direct access to the exception's context to better understand the problem. PDBDebugMode, a postmortem debugger, allows us to do that. It opens a pdb prompt to let us get our hands dirty.

How to do it…

  1. Add a Products.PDBDebugMode line in the eggs parameter of the [buildout] part.
    [buildout]
    ...
    
    # Add additional eggs here 
    eggs = 
        iw.debug 
        Products.DocFinderTab 
        Products.Clouseau
     Products.PDBDebugMode
    
  2. Rebuild the Zope instance:
     ./bin/buildout
    
  3. Test PDBDebugMode. As we said earlier, from now on every time Zope fires an exception (if running in debug mode), a pdb (not an ipdb though) will prompt us to inspect the context.
    • For an easy test, we must first tell Zope to pay attention to (that is, not ignore) the kind of exceptions we are going to produce. Open your browser and go to http://localhost:8080/plone/prefs_error_log_form and delete the NotFound line in Ignored exception types field (or you can also follow the ipzope example we included in Accessing an IPython powered shell earlier).
    • Then type any URL that you know doesn't exist, like http://localhost:8080/plone/doesnt-exist.

    Now check your console. You will see a pdb prompt waiting for you. Unluckily, this example is not a very good one because the exception was fired by the ZPublisher (try writing self in the console), so we can't see familiar code.

Note

You can suffer problems with PDBDebugMode such as triggering on at unexpected times, causing apparent slowness, or freezes. Thus, if your instance doesn't seem to be responding, check its console.

More information about PDBDebugMode is available at: http://plone.org/products/pdbdebugmode.

See also

  • Accessing an IPython powered shell
主站蜘蛛池模板: 庄浪县| 西安市| 临颍县| 扬州市| 天等县| 阜阳市| 安乡县| 永昌县| 安泽县| 新兴县| 凤翔县| 化德县| 宁陕县| 革吉县| 达尔| 云安县| 佛山市| 同心县| 建平县| 彩票| 织金县| 鄂托克前旗| 大方县| 济源市| 甘德县| 元朗区| 基隆市| 兴山县| 陇南市| 花莲市| 三台县| 佛教| 体育| 抚州市| 潞城市| 宜兰市| 东光县| 梁河县| 玉溪市| 西昌市| 大冶市|