I just had my first fun with Pep 393 strings and debuggers. Trying to debug a deadlocked python program, I'm trying to figure out the callstack of the thread in the debugger.
I ended up with something like:
(char*)&((PyASCIIObject*)(tstate->frame->f_code->co_filename))[1]
while previously, it was sufficient to do
(PyUnicodeObject*)(tstate->frame->f_code->co_filename)
Obviously this won't work for non-ASCII objects.
I wonder if there is a way to make this situation easier? Perhaps for "debug" builds, we can store some debug information in the frame object, e.g. utf8 encoding of the filename and function?
K