author | Denis Laxalde <denis@laxalde.org> |
Sun, 27 Oct 2019 18:12:24 +0100 | |
branch | stable |
changeset 43334 | 4128ffba4431 |
parent 43251 | 970978975574 |
child 44515 | d738b7a18438 |
permissions | -rw-r--r-- |
43251
970978975574
rust-utils: introduce a debug util to print the python stack trace
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
1 |
use cpython::{PyDict, PyObject, PyResult, PyTuple, Python}; |
970978975574
rust-utils: introduce a debug util to print the python stack trace
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
2 |
|
970978975574
rust-utils: introduce a debug util to print the python stack trace
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
3 |
#[allow(unused)] |
970978975574
rust-utils: introduce a debug util to print the python stack trace
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
4 |
pub fn print_python_trace(py: Python) -> PyResult<PyObject> { |
970978975574
rust-utils: introduce a debug util to print the python stack trace
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
5 |
eprintln!("==============================="); |
970978975574
rust-utils: introduce a debug util to print the python stack trace
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
6 |
eprintln!("Printing Python stack from Rust"); |
970978975574
rust-utils: introduce a debug util to print the python stack trace
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
7 |
eprintln!("==============================="); |
970978975574
rust-utils: introduce a debug util to print the python stack trace
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
8 |
let traceback = py.import("traceback")?; |
970978975574
rust-utils: introduce a debug util to print the python stack trace
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
9 |
let sys = py.import("sys")?; |
970978975574
rust-utils: introduce a debug util to print the python stack trace
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
10 |
let kwargs = PyDict::new(py); |
970978975574
rust-utils: introduce a debug util to print the python stack trace
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
11 |
kwargs.set_item(py, "file", sys.get(py, "stderr")?)?; |
970978975574
rust-utils: introduce a debug util to print the python stack trace
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
12 |
traceback.call(py, "print_stack", PyTuple::new(py, &[]), Some(&kwargs)) |
970978975574
rust-utils: introduce a debug util to print the python stack trace
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
13 |
} |