:g//p
В его более длинной форме:
:global/regular-expression/print
можно не учесть pattern/regex, и Vim снова использует предыдущий критерий поиска.
Мелочи: инструмент grep назвали в честь этой последовательности команды.
Ну, я узнал, как это сделать.
Без повышения ( только сообщение об ошибке, потому что код для извлечения информации из трассировки слишком тяжел, чтобы размещать его здесь):
PyObject *ptype, *pvalue, *ptraceback;
PyErr_Fetch(&ptype, &pvalue, &ptraceback);
//pvalue contains error message
//ptraceback contains stack snapshot and many other information
//(see python traceback structure)
//Get error message
char *pStrErrorMessage = PyString_AsString(pvalue);
И версия BOOST
try{
//some code that throws an error
}catch(error_already_set &){
PyObject *ptype, *pvalue, *ptraceback;
PyErr_Fetch(&ptype, &pvalue, &ptraceback);
handle<> hType(ptype);
object extype(hType);
handle<> hTraceback(ptraceback);
object traceback(hTraceback);
//Extract error message
string strErrorMessage = extract<string>(pvalue);
//Extract line number (top entry of call stack)
// if you want to extract another levels of call stack
// also process traceback.attr("tb_next") recurently
long lineno = extract<long> (traceback.attr("tb_lineno"));
string filename = extract<string>(traceback.attr("tb_frame").attr("f_code").attr("co_filename"));
string funcname = extract<string>(traceback.attr("tb_frame").attr("f_code").attr("co_name"));
... //cleanup here
В API Python C PyObject_Str
возвращает новую ссылку на строковый объект Python со строковой формой объекта Python, который вы передаете в качестве аргумента - просто например str (o)
в коде Python. Обратите внимание, что объект исключения не имеет «такой информации, как номер строки» - это в объекте трассировки (вы можете использовать PyErr_Fetch
для получения как объекта исключения, так и объекта трассировки). Не знаю, что (если вообще) Boost предоставляет, чтобы упростить использование этих конкретных функций C API, но в худшем случае вы всегда можете прибегнуть к этим функциям, поскольку они предлагаются в самом C API.