"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > Python Debugging utility

Python Debugging utility

Published on 2024-08-07
Browse:235

Python Debugging utility

pdbwhereami

Purpose

This is an utility module which helps in debugging python sources with below functions

  • whoami
  • whereami
  • whocalledme
  • calledtree
  • whosdaddy

Where is it used?

This moduled help developers in several key ways, especially when it comes to debugging and maintaining code. Here are the primary benefits:

1. Debugging:

  • Identifying Errors: When an error occurs, knowing the exact line number and file can significantly reduce the time spent searching for the cause. By calling these functions in error messages, developers can quickly pinpoint where an issue arose.
  • Traceability: By logging the line number and file name, developers can trace the execution path of the program, especially when dealing with complex codebases or multi-file projects.

2. Logging:

  • Detailed Logs: Including line numbers and file names in log messages provides detailed context, making logs more informative and easier to interpret.
  • Automated Monitoring: In large systems, automated monitoring tools can use these details to flag specific parts of the code that frequently cause issues, aiding in proactive maintenance.

3. Assertions and Debug Builds:

  • Assertions: Using macros like assert() along with whoami, whereami, whocalledme, calledtree and whosdaddy helps in catching logical errors during development. When an assertion fails, it prints the line number and file name, making it easier to debug.
  • Conditional Compilation: For debug builds, additional diagnostic information can be included using these macros without affecting the release builds.

4. Documentation and Maintenance:

  • Code Reviews: During code reviews, having detailed error logs can help reviewers understand the flow and identify potential problem areas more efficiently.
  • Maintenance: For long-term maintenance, having detailed error reports with line numbers and file names helps new developers understand and fix issues without needing deep familiarity with the entire codebase.

By leveraging whoami, whereami, whocalledme, calledtree and whosdaddy, developers can create more robust, maintainable, and easier-to-debug code.

How to use it?

from pdbwhereami import whoami, whereami, whocalledme, calledtree, whosdaddy

def debug_utility():
    whoami()
    whoami("I am in test_whoami function")

    print()

    whereami()
    whereami("I am in test_whereami")
    whereami(obsolete_path = True)
    whereami(path_depth=6)

    print()

    whocalledme()
    whocalledme(obsolete_path = True)
    whocalledme(path_depth=6)

    print()

    calledtree()
    tstr = calledtree(verbose=False)
    print(tstr)
    calledtree(tree_depth=1)
    calledtree(tree_depth=2)

    print()
    whosdaddy()

debug_utility()

output

[debug_utility] ->
[debug_utility] -> I am in test_whoami function

[whereami/main.py:71]:debug_utility ->
[whereami/main.py:72]:debug_utility -> I am in test_whereami
[/home/bhagavan/whereami/main.py:73]:debug_utility ->
[/home/bhagavan/whereami/main.py:74]:debug_utility ->

[whereami/main.py:93]: ->
[/home/bhagavan/whereami/main.py:93]: ->
[/home/bhagavan/whereami/main.py:93]: ->

#1[/home/bhagavan/whereami/main.py:84]:debug_utility    ] ->

Installation

Using pip

pip install pdbwhereami

Using sources

git clone https://github.com/bhagavansprasad/pdbwhereami.git
cd pdbwhereami
pip insall ./
Release Statement This article is reproduced at: https://dev.to/bhagavan_prasad_d1496a96a/python-debugging-utility-kd1?1 If there is any infringement, please contact [email protected] to delete it
Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3