1 When an unexpected error occurs, ROX-Lib displays an error box with a short
2 summary message and a Details button.
4 Most errors are not fatal. The summary may tell you what the problem is on its
5 own. For example, 'Permission denied' usually means you tried to save somewhere
6 you shouldn't (you'll also see this if you try to save to a removeable disk
7 without mounting it). In these cases, you can just click OK to continue.
9 If you don't understand the cause of the error from the summary, click on the
10 Details button for more information. The window expands to show more
11 information, and two extra buttons appear:
13 - 'Bug Report' lets you save the information in the window as a text file. You
14 can then email this to the program's author.
16 - 'Forced Quit' quits without saving. Use this only if trying to exit the
17 program normally just brings up another error box.
19 Above the buttons, three new areas appear. The top list shows exactly what the
20 program was doing when the error occurred. Programs work by performing
21 functions and sub-functions (and sub-sub-functions, etc). The first line is
22 the most general task ('run the program'). If we take the example of saving
23 from Edit to somewhere where we don't have write permission, the list shows
24 these functions after dragging the file:
26 ? - the whole program, not a specific function
27 mainloop - repeatedly handling requests from you and other programs
28 drag_data_get - handling a request from the filer to get the dragged data
29 save_to_file - the request is satisfied by saving the data to a file
30 open_private - a new file is opened for writing
32 Note that all of these operations were still on-going. Each line is a part of
33 the task on the line above (creating a new empty file is the first part of
34 saving the data to a file, which is part of responding to the filer's request
35 for data, which is part of running the program).
37 Each of these functions has some information that it is working with. When you
38 select a function in the list at the top, this information (its variables)
39 are shown in the lower list. So, when 'open_private' is selected, we see a
44 path '/cdrom/TextFile'
46 This shows the name of the new file that it was trying to create. If you
47 select 'drag_data_get', you'll see a variable called 'uri' with the value
48 'file:///cdrom/TextFile'. This is where the filer asked the data to be saved
49 to. drag_data_get saw that it was a file location, worked out the filename,
50 and called save_to_file to handle it.
52 Below the list of variables is a prompt (>>>) into which you can type a Python
53 expression. This allows people who know Python to investigate the problem
54 further. The expression is evaluated in the context of the selected stack
55 frame. The stack trace also shows the file and line number of the instruction
56 in each function that was being executed (for all but the last one, this is the
57 instruction that called the function on the line below).
59 Double-click on a line in the stack trace to load the source file into Edit,
60 with the cursor on that line.
62 If after looking at all this information you still don't understand what the
63 problem is, click on Bug Report and save the stack trace somewhere, then email
64 it to the author of the program.