Skip to main content

By leveraging `pdbwhereami`, developers can create more robust, maintainable, and easier-to-debug code.

Project description

pdbwhereami (Python Module)

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]:<module> ->
[/home/bhagavan/whereami/main.py:93]:<module> ->
[/home/bhagavan/whereami/main.py:93]:<module> ->

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

#1[/home/bhagavan/whereami/main.py:85]:debug_utility <--
#0[/home/bhagavan/whereami/main.py:93]:<module> <--

#0[/home/bhagavan/whereami/main.py:87]:debug_utility <--

#1[/home/bhagavan/whereami/main.py:88]:debug_utility <--
#0[/home/bhagavan/whereami/main.py:93]:<module> <--

[<module>] ->

Installation

Using pip

pip install pdbwhereami

Using sources

git clone https://github.com/bhagavansprasad/pdbwhereami.git
cd pdbwhereami
pip insall ./

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdbwhereami-1.0.1.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pdbwhereami-1.0.1-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

File details

Details for the file pdbwhereami-1.0.1.tar.gz.

File metadata

  • Download URL: pdbwhereami-1.0.1.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for pdbwhereami-1.0.1.tar.gz
Algorithm Hash digest
SHA256 92fa3225658b743e1c7ffaaa7c565ef53679c451b2d20565065f10c6454a9019
MD5 f95b5e24b704179b5544a627e73bba18
BLAKE2b-256 784cab5a920d917a1b228e54da2d0566e14ecfebd3450b22a62676aa1caa4585

See more details on using hashes here.

File details

Details for the file pdbwhereami-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: pdbwhereami-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 4.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for pdbwhereami-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 70f39fba5b62db967026f2937a146b2c1832c54719429f7473a01e24a2cf7bf2
MD5 de66a1dbf5e0f8bc12b06d3be46fcae7
BLAKE2b-256 ed5441b9a2abd34f98fada10b555d6bf1bde27b56446fa9445805fe1b1abc375

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page