author | yippi |
Mon, 27 Sep 2010 21:07:51 +0000 | |
changeset 20108 | 51df67ca9307 |
parent 14754 | 965bc8223086 |
permissions | -rw-r--r-- |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
1 |
/jds/bin/diff -uprN bug-buddy-2.25.2.old/src/bug-buddy.c bug-buddy-2.25.2/src/bug-buddy.c |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
2 |
--- bug-buddy-2.25.2.old/src/bug-buddy.c 2008-12-11 12:35:33.705860000 +0000 |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
3 |
+++ bug-buddy-2.25.2/src/bug-buddy.c 2008-12-11 12:38:26.475348000 +0000 |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
4 |
@@ -1096,19 +1096,30 @@ gdb_insert_text (const gchar *stacktrace |
13735 | 5 |
GtkTextView *text_view; |
6 |
GtkTextIter end; |
|
7 |
GtkTextBuffer *buffer; |
|
8 |
+ char *gdb = g_find_program_in_path ("gdb"); |
|
9 |
+ char *pstack = g_find_program_in_path ("pstack"); |
|
10 |
||
11 |
- /* FIXME: These strings are gdb specific, we should add here also dbx */ |
|
12 |
- const char *bt_step1 = "#1"; |
|
13 |
- const char *bt_step2 = "#2"; |
|
14 |
- const char *bt_step3 = "#3"; |
|
15 |
- |
|
16 |
- if (!g_strrstr (stacktrace, bt_step1) && |
|
17 |
- !g_strrstr (stacktrace, bt_step2) && |
|
18 |
- !g_strrstr (stacktrace, bt_step3)) { |
|
19 |
- return FALSE; |
|
20 |
- } |
|
21 |
- |
|
22 |
- |
|
23 |
+#if defined(sun) && defined(__SVR4) |
|
24 |
+ if (pstack) { |
|
25 |
+ g_free (gdb); |
|
26 |
+ gdb = NULL; |
|
27 |
+ } |
|
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
28 |
+#endif /* #if defined(sun) && defined(__SVR4) */ |
13735 | 29 |
+ |
30 |
+ if (gdb) { |
|
31 |
+ /* FIXME: These strings are gdb specific, we should add here also dbx */ |
|
32 |
+ const char *bt_step1 = "#1"; |
|
33 |
+ const char *bt_step2 = "#2"; |
|
34 |
+ const char *bt_step3 = "#3"; |
|
35 |
+ |
|
36 |
+ if (!g_strrstr (stacktrace, bt_step1) && |
|
37 |
+ !g_strrstr (stacktrace, bt_step2) && |
|
38 |
+ !g_strrstr (stacktrace, bt_step3)) { |
|
39 |
+ g_free (gdb); |
|
40 |
+ g_free (pstack); |
|
41 |
+ return FALSE; |
|
42 |
+ } |
|
43 |
+ } |
|
44 |
||
45 |
text_view = GTK_TEXT_VIEW (gtk_builder_get_object (ui, "gdb-text")); |
|
46 |
buffer = gtk_text_view_get_buffer (text_view); |
|
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
47 |
@@ -1117,6 +1128,9 @@ gdb_insert_text (const gchar *stacktrace |
13735 | 48 |
/* add the stacktrace to the GtkTextView */ |
49 |
gtk_text_buffer_insert (buffer, &end, stacktrace, strlen (stacktrace)); |
|
50 |
||
51 |
+ g_free (gdb); |
|
52 |
+ g_free (pstack); |
|
53 |
+ |
|
54 |
return TRUE; |
|
55 |
} |
|
56 |
||
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
57 |
/jds/bin/diff -uprN bug-buddy-2.25.2.old/src/gdb-buddy.c bug-buddy-2.25.2/src/gdb-buddy.c |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
58 |
--- bug-buddy-2.25.2.old/src/gdb-buddy.c 2008-12-11 12:35:33.723199000 +0000 |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
59 |
+++ bug-buddy-2.25.2/src/gdb-buddy.c 2008-12-11 12:45:14.364972000 +0000 |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
60 |
@@ -210,11 +210,9 @@ gdb_get_trace (const gchar *app, int pid |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
61 |
GIOChannel *ioc; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
62 |
GError *error = NULL; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
63 |
GdbData *gdb_data = NULL; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
64 |
- char *args[] = { "gdb", |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
65 |
- "--batch", |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
66 |
- "--quiet", |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
67 |
- "--command=" BUDDY_DATADIR "/gdb-cmd", |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
68 |
- NULL, NULL, NULL }; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
69 |
+ char *args[7]; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
70 |
+ char *gdb = NULL; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
71 |
+ char *pstack = NULL; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
72 |
|
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
73 |
g_return_val_if_fail (app != NULL, 0); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
74 |
g_return_val_if_fail (*app != '\0', 0); |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
75 |
@@ -225,6 +223,29 @@ gdb_get_trace (const gchar *app, int pid |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
76 |
|
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
77 |
d (g_print ("app=%s\n", app)); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
78 |
|
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
79 |
+#if defined(sun) && defined(__SVR4) |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
80 |
+ pstack = g_find_program_in_path ("pstack"); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
81 |
+ |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
82 |
+ if (pstack) { |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
83 |
+ args[0] = pstack; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
84 |
+ args[2] = args[3] = args[4] = args[5] = args[6] = NULL; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
85 |
+ } else { |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
86 |
+ gdb = g_find_program_in_path ("gdb"); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
87 |
+ args[0] = gdb; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
88 |
+ args[1] = "--batch"; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
89 |
+ args[2] = "--quiet"; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
90 |
+ args[3] = "--command=" BUDDY_DATADIR "/gdb-cmd"; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
91 |
+ args[4] = args[5] = args[6] = NULL; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
92 |
+ } |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
93 |
+#else |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
94 |
+ gdb = g_find_program_in_path ("gdb"); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
95 |
+ args[0] = gdb; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
96 |
+ args[1] = "--batch"; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
97 |
+ args[2] = "--quiet"; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
98 |
+ args[3] = "--command=" BUDDY_DATADIR "/gdb-cmd"; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
99 |
+ args[4] = args[5] = args[6] = NULL; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
100 |
+#endif /* defined(sun) && defined(__SVR4) */ |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
101 |
+ |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
102 |
/* apply a SIGCONT to the process */ |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
103 |
kill (pid, SIGCONT); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
104 |
|
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
105 |
@@ -249,30 +270,38 @@ gdb_get_trace (const gchar *app, int pid |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
106 |
} |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
107 |
} |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
108 |
|
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
109 |
- args[0] = g_find_program_in_path ("gdb"); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
110 |
- args[4] = long_app; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
111 |
+ if (!pstack) |
13735 | 112 |
+ args[4] = long_app; |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
113 |
|
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
114 |
if (args[0] == NULL) { |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
115 |
d(g_message ("Path: %s", getenv ("PATH"))); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
116 |
g_free (long_app); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
117 |
g_set_error (err, GDB_BUDDY_ERROR, GDB_BUDDY_GDB_NOT_FOUND, |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
118 |
- _("GDB could not be found on your system. " |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
119 |
- "Debugging information will not be obtained.")); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
120 |
+ _("%s could not be found on your system. " |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
121 |
+ "Debugging information will not be obtained."), |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
122 |
+ pstack != NULL ? "pstack" : "GDB"); |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
123 |
+ g_free (args[0]); |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
124 |
+ g_free (long_app); |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
125 |
return 0; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
126 |
} |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
127 |
|
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
128 |
d(g_message ("About to debug '%s'", long_app)); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
129 |
|
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
130 |
- if (!g_file_test (BUDDY_DATADIR "/gdb-cmd", G_FILE_TEST_EXISTS)) { |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
131 |
- g_set_error (err, GDB_BUDDY_ERROR, GDB_BUDDY_GDB_CMD_NOT_FOUND, |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
132 |
- _("Could not find the gdb-cmd file.\n" |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
133 |
- "Please try reinstalling Bug Buddy.")); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
134 |
- g_free (args[0]); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
135 |
- g_free (long_app); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
136 |
- return 0; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
137 |
+ if (gdb) { |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
138 |
+ if (!g_file_test (BUDDY_DATADIR "/gdb-cmd", G_FILE_TEST_EXISTS)) { |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
139 |
+ g_set_error (err, GDB_BUDDY_ERROR, GDB_BUDDY_GDB_CMD_NOT_FOUND, |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
140 |
+ _("Could not find the gdb-cmd file.\n" |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
141 |
+ "Please try reinstalling Bug Buddy.")); |
13735 | 142 |
+ g_free (args[0]); |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
143 |
+ g_free (long_app); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
144 |
+ return 0; |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
145 |
+ } |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
146 |
} |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
147 |
|
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
148 |
- args[5] = g_strdup_printf ("%d", pid); |
13735 | 149 |
+ if (pstack) |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
150 |
+ args[1] = g_strdup_printf ("%d", pid); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
151 |
+ else |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
152 |
+ args[5] = g_strdup_printf ("%d", pid); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
153 |
|
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
154 |
if (!g_spawn_async_with_pipes (NULL, args, NULL, 0, NULL, NULL, |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
155 |
&gdb_pid, |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
156 |
@@ -284,7 +313,10 @@ gdb_get_trace (const gchar *app, int pid |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
157 |
error->message); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
158 |
g_error_free (error); |
13735 | 159 |
g_free (args[0]); |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
160 |
- g_free (args[5]); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
161 |
+ if (pstack) |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
162 |
+ g_free (args[1]); |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
163 |
+ else |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
164 |
+ g_free (args[5]); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
165 |
g_free (long_app); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
166 |
return 0; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
167 |
} |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
168 |
@@ -309,7 +341,10 @@ gdb_get_trace (const gchar *app, int pid |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
169 |
g_io_channel_unref (ioc); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
170 |
|
13735 | 171 |
g_free (args[0]); |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
172 |
- g_free (args[5]); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
173 |
+ if (pstack) |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
174 |
+ g_free (args[1]); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
175 |
+ else |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
176 |
+ g_free (args[5]); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
177 |
g_free (long_app); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
178 |
|
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
179 |
return source_id; |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
180 |
/jds/bin/diff -uprN bug-buddy-2.25.2.old/gnome-breakpad/gnome-breakpad.cc bug-buddy-2.25.2/gnome-breakpad/gnome-breakpad.cc |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
181 |
--- bug-buddy-2.25.2.old/gnome-breakpad/gnome-breakpad.cc 2008-12-11 12:35:33.736965000 +0000 |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
182 |
+++ bug-buddy-2.25.2/gnome-breakpad/gnome-breakpad.cc 2008-12-11 12:55:07.314379000 +0000 |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
183 |
@@ -379,25 +379,50 @@ run_bug_buddy (const gchar *appname, pid |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
184 |
static bool |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
185 |
run_gdb (const gchar *appname, pid_t pid) |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
186 |
{ |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
187 |
- gchar *exec_str; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
188 |
+ gchar *exec_str = NULL; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
189 |
gchar *title; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
190 |
gboolean res; |
6182 | 191 |
GError *error = NULL; |
13735 | 192 |
+ gchar *gdb = NULL; |
10387 | 193 |
|
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
194 |
title = g_strdup_printf ("Debugging %s", appname); |
10387 | 195 |
|
11198
02b533546498
* patches/bug-buddy-01-use-pstack.diff : Update #define check
mattman
parents:
10623
diff
changeset
|
196 |
+#if defined(sun) && defined(__SVR4) |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
197 |
+ gdb = g_find_program_in_path("gdb");; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
198 |
+ if (gdb) { |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
199 |
+ exec_str = g_strdup_printf("gnome-terminal " |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
200 |
+ "--title=\"%s\" " |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
201 |
+ "--disable-factory " |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
202 |
+ "--command=\"gdb %s %d\"", |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
203 |
+ title, appname, (int)pid); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
204 |
+ g_free (gdb); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
205 |
+ } else { |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
206 |
+ gchar *dbx = g_find_program_in_path("dbx"); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
207 |
+ if (dbx) { |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
208 |
+ exec_str = g_strdup_printf("gnome-terminal " |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
209 |
+ "--title=\"%s\" " |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
210 |
+ "--disable-factory " |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
211 |
+ "--command=\"dbx /proc/%d/object/a.out %d\"", |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
212 |
+ title, (int)pid, (int)pid); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
213 |
+ } |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
214 |
+ g_free (dbx); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
215 |
+ } |
12211
10f673786ff5
* patches/bug-buddy-01-use-pstack : Update patch so that the default
mattman
parents:
11198
diff
changeset
|
216 |
+#else |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
217 |
exec_str = g_strdup_printf("gnome-terminal " |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
218 |
"--title=\"%s\" " |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
219 |
"--disable-factory " |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
220 |
"--command=\"gdb %s %d\"", |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
221 |
title, appname, (int)pid); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
222 |
- g_free (title); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
223 |
- res = g_spawn_command_line_sync (exec_str, NULL, NULL, |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
224 |
- NULL, &error); |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
225 |
- g_free(exec_str); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
226 |
- if (!res) { |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
227 |
- g_warning("Couldn't run debugger\n"); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
228 |
- return false; |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
229 |
+#endif /* defined(sun) && defined(__SVR4) */ |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
230 |
+ g_free (title); |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
231 |
+ if (exec_str) { |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
232 |
+ res = g_spawn_command_line_sync (exec_str, NULL, NULL, |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
233 |
+ NULL, &error); |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
234 |
+ g_free(exec_str); |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
235 |
+ if (!res) { |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
236 |
+ g_warning("Couldn't run debugger\n"); |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
237 |
+ return false; |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
238 |
+ } |
6182 | 239 |
} |
240 |
||
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
241 |
return true; |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
242 |
@@ -406,8 +431,12 @@ run_gdb (const gchar *appname, pid_t pid |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
243 |
static void |
13735 | 244 |
check_if_gdb () |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
245 |
{ |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
246 |
- char *mypath; |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
247 |
- gchar *gdb; |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
248 |
+ char *mypath = NULL; |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
249 |
+ gchar *gdb = NULL; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
250 |
+#if defined(sun) && defined(__SVR4) |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
251 |
+ gchar *pstack = NULL; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
252 |
+ gchar *dbx = NULL; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
253 |
+#endif /* defined(sun) && defined(__SVR4) */ |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
254 |
bool has_debug_symbols = false; |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
255 |
char *filename; |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
256 |
gchar *appname; |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
257 |
@@ -421,22 +450,40 @@ check_if_gdb () |
6182 | 258 |
|
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
259 |
appname = g_get_prgname (); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
260 |
pid = getpid (); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
261 |
+ |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
262 |
+#if defined(sun) && defined(__SVR4) |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
263 |
+ gdb = g_find_program_in_path ("gdb"); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
264 |
+ pstack = g_find_program_in_path ("pstack"); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
265 |
+ dbx = g_find_program_in_path ("dbx"); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
266 |
+ |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
267 |
+ if ((gdb || dbx) && g_getenv("GNOME_HACKER")) { |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
268 |
+#else |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
269 |
gdb = g_find_program_in_path ("gdb"); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
270 |
|
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
271 |
if (gdb && g_getenv("GNOME_HACKER")) { |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
272 |
+#endif /* defined(sun) && defined(__SVR4) */ |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
273 |
res = run_gdb (appname, pid); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
274 |
if (!res) |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
275 |
_exit (1); |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
276 |
_exit(0); |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
277 |
} |
10389 | 278 |
|
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
279 |
+#if defined(sun) && defined(__SVR4) |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
280 |
+ mypath = g_strdup_printf ("/proc/%d/object/a.out", (int)pid); |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
281 |
+#else |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
282 |
mypath = g_file_read_link ("/proc/self/exe", NULL); |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
283 |
+#endif /* defined(sun) && defined(__SVR4) */ |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
284 |
+ |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
285 |
if (mypath) |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
286 |
has_debug_symbols = elf_has_debug_symbols (mypath); |
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
287 |
|
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
288 |
g_free (mypath); |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
289 |
|
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
290 |
+#if defined(sun) && defined(__SVR4) |
14754
965bc8223086
* base-specs/bug-buddy.spec : Re-worked patches 01, and 02 because
mattman
parents:
13735
diff
changeset
|
291 |
+ if (bugbuddy && (gdb || pstack) && has_debug_symbols) { |
13341
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
292 |
+#else |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
293 |
if (bugbuddy && gdb && has_debug_symbols) { |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
294 |
+#endif /* defined(sun) && defined(__SVR4) */ |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
295 |
res = run_bug_buddy (appname, pid, NULL); |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
296 |
if (!res) |
846dca93b6b6
* base-specs/bug-buddy.spec : Based on community feedback removed one
mattman
parents:
12218
diff
changeset
|
297 |
_exit (1); |