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

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
主站蜘蛛池模板: 富蕴县| 阳谷县| 临安市| 辉县市| 堆龙德庆县| 新野县| 隆安县| 防城港市| 怀集县| 沈丘县| 汉川市| 祁连县| 沙河市| 通榆县| 德钦县| 澄城县| 南华县| 揭西县| 汕尾市| 天津市| 霞浦县| 西林县| 科技| 天等县| 郸城县| 秀山| 会东县| 涞水县| 林芝县| 古浪县| 砀山县| 宜都市| 九寨沟县| 攀枝花市| 靖州| 大理市| 昭觉县| 石首市| 丰顺县| 鸡西市| 财经|