From patchwork Fri Oct 11 11:43:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D7057: rust-utils: introduce a debug util to print the python stack trace From: phabricator X-Patchwork-Id: 42216 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Fri, 11 Oct 2019 11:43:04 +0000 Alphare created this revision. Herald added subscribers: mercurial-devel, kevincox, durin42. Herald added a reviewer: hg-reviewers. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D7057 AFFECTED FILES rust/hg-cpython/src/lib.rs rust/hg-cpython/src/utils.rs CHANGE DETAILS To: Alphare, #hg-reviewers Cc: durin42, kevincox, mercurial-devel diff --git a/rust/hg-cpython/src/utils.rs b/rust/hg-cpython/src/utils.rs new file mode 100644 --- /dev/null +++ b/rust/hg-cpython/src/utils.rs @@ -0,0 +1,13 @@ +use cpython::{PyDict, PyObject, PyResult, PyTuple, Python}; + +#[allow(unused)] +pub fn print_python_trace(py: Python) -> PyResult { + eprintln!("==============================="); + eprintln!("Printing Python stack from Rust"); + eprintln!("==============================="); + let traceback = py.import("traceback")?; + let sys = py.import("sys")?; + let kwargs = PyDict::new(py); + kwargs.set_item(py, "file", sys.get(py, "stderr")?)?; + traceback.call(py, "print_stack", PyTuple::new(py, &[]), Some(&kwargs)) +} diff --git a/rust/hg-cpython/src/lib.rs b/rust/hg-cpython/src/lib.rs --- a/rust/hg-cpython/src/lib.rs +++ b/rust/hg-cpython/src/lib.rs @@ -35,6 +35,7 @@ pub mod exceptions; pub mod filepatterns; pub mod parsers; +pub mod utils; py_module_initializer!(rustext, initrustext, PyInit_rustext, |py, m| { m.add(