Skip to main content

Debug support for RPC servers

Project description

Copyright (c) 2010-2012 Ben Bass <benbass@codedstructure.net>

All rights reserved.

About

rpcpdb is a wrapper around the Python pdb debugger which makes it more suitable for use in RPC contexts.

It is designed to fulfil the need to debug a function on an already-running server which uses threads or processes to dispatch each remote procedure call, without having to change the source code to the server in any way. There is no disruption to other clients and rpc calls while the selected call is being debugged.

In particular, a mixin class is provided which adds the debug_func and undebug_func methods to your RPC server. These allow breakpoints to be controlled by another RPC client.

For an example, run the xmlrpc_server.py server process, then run one or more xmlrpc_client.py processes which will continually perform RPC requests against it. xmlrpc_debug.py can then be run to inject a debug breakpoint in a method which the clients are continually calling; the next client to call that function will be remotely debuggable, while other clients carry on oblivious.

An alternative example added in v0.2 is the ‘test_server.py’ which does not use RPC but runs functions in background threads. It gives a good overview of usage in a single module without extra dependencies.

Currently the debug interface is provided via a UNIX socket, but this will be extended in future.

RPC framework support is intended to cover XMLRPC, RPyC and Pyro in the initial stages.

Plans

  • Update examples, tidy up, document.

  • Support other interfaces than termsock / UNIX socket.

Done

  • v0.2 - Add trigger criteria which check incoming arguments so the user can ensure the right client triggers the breakpoint

License information

See the file “LICENSE” for information terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.

Changes

0.3
  • Added ignore_count functionality for skipping a matched breakpoint n times

0.2.1
  • No functional changes; updates to Trove classifiers only

0.2
  • Python 3 support (3.2+ only)

  • parameter matching to trigger debugger (conditional debugging)

0.1.1
  • fix issue where select call in termsock was continually finding writable FDs, causing 100% CPU usage

0.1
  • first alpha release.

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

rpcpdb-0.3.tar.gz (8.2 kB view details)

Uploaded Source

File details

Details for the file rpcpdb-0.3.tar.gz.

File metadata

  • Download URL: rpcpdb-0.3.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for rpcpdb-0.3.tar.gz
Algorithm Hash digest
SHA256 1464be869111c3359ae64a83bd419b7395f13a9518a659e39777fda13aa4b464
MD5 5474f014bd96a7452d74ff57ea5bea99
BLAKE2b-256 33c95d4864c0a25b710986a77f9eafa0f7d17216737f395c46a75ab7c7f66b6a

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