Skip to main content

Remote PDB Debugger Based On PDB

Project description

PDBX

What is it
----------
pdbx: A remote pdb debugger Base on pdb
It's:
1) be compatible with pdb
2) remote debug supported
3) xq/xquit commands supported
quit safely from debugger, the program being executed is continued(not abored)
4) redebug supported
5) suspend mode supported
6) pystack(like jstack) supported


Installing pdbx
---------------
1) Download pdbx from https://code.google.com/p/stonelab/downloads/list or https://pypi.python.org/pypi
2) Unpack the archive
tar xvf pdbx-x.x.x.tar.gz
3) Install pdbx
sudo python setup.py install


How to use pdbx
---------------
1) Add pbdx in python scripts
e.g.
from pdbx import Rpdb
rpdb = Rpdb() # Debugger started. Port is 8787(Default Value), Suspend is True(Default Value)
rpdb = Rpdb(9898) # Debugger started. Port is 9898(Specified Value), Suspend is True(Default Value)
rpdb = Rpdb(suspend=False) # Debugger started. Port is 8787(Default Value), Suspend is False(Specified Value)
rpdb = Rpdb(9898, False) # Debugger started. Port is 9898(Specified Value), Suspend is False(Specified Value)
rpdb.set_trace()

2) Remote debug with telnet
e.g.
telnet xxx.xxx.xxx.xxx 8787

3) Interact with pdb commands
Documented commands (type help <topic>):
========================================
EOF bt cont enable jump pp run unt xq
a c continue exit l q s until xquit
alias cl d h list quit step up
args clear debug help n r tbreak w
b commands disable ignore next restart u whatis
break condition down j p return unalias where

xq/xquit are new commands in pdbx
it's used to quit safely from debugger, the program being executed is continued(not abored)

4) Re-Remote debug with telnet
telnet again.

5) use pystack
enable pystack in python scripts and then run the scripts
e.g.
import pdbx
pdbx.enable_pystack()

use kill -30 pid, then scripts will print python thread stack info:
"CP Server Thread-4" tid=4369723392
at self.__bootstrap_inner()(threading.py:525)
at self.run()(threading.py:552)
at conn = self.server.requests.get()(__init__.py:1367)
at self.not_empty.wait()(Queue.py:168)
at waiter.acquire()(threading.py:244)

"CP Server Thread-7" tid=4382343168
at self.__bootstrap_inner()(threading.py:525)
at self.run()(threading.py:552)
at conn = self.server.requests.get()(__init__.py:1367)
at self.not_empty.wait()(Queue.py:168)
at waiter.acquire()(threading.py:244)

"MainThread" tid=140735286018432
at app.run()(raspctl.py:173)
at return wsgi.runwsgi(self.wsgifunc(*middleware))(application.py:313)
at return httpserver.runsimple(func, validip(listget(sys.argv, 1, '')))(wsgi.py:54)
at server.start()(httpserver.py:157)
at self.tick()(__init__.py:1765)
at s, addr = self.socket.accept()(__init__.py:1800)
at sock, addr = self._sock.accept()(socket.py:202)
at pystack()(pdbx.py:179)
at for filename, lineno, _, line in traceback.extract_stack(stack):(pdbx.py:168)


Release Notes
-------------
V0.1.0
1) remote debug supported

V0.2.0
1) xq/xquit supported
2) redebug supported
3) suspend mode supported
4) add setup.py

v0.3.0
1) pystack supported

Author Info
-----------
author: stone2083<Stone.J>
email: stone2083@yahoo.cn
blog: http://www.blogjava.net/stone2083
site: https://code.google.com/p/stonelab

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

pdbx-0.3.0.tar.gz (3.6 kB view details)

Uploaded Source

File details

Details for the file pdbx-0.3.0.tar.gz.

File metadata

  • Download URL: pdbx-0.3.0.tar.gz
  • Upload date:
  • Size: 3.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pdbx-0.3.0.tar.gz
Algorithm Hash digest
SHA256 31f3e5775723cd07d0637e3f58421d67a8f4ca2734459730e2fa4310789d709c
MD5 2a652c9adae00e40c4b8d033d0c271ad
BLAKE2b-256 f10662aa034c16d2225424318daa20597f0d20a23ead4d147f32ed477de03544

See more details on using hashes here.

Supported by

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