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