Rev 3100 | Rev 3472 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3100 | Rev 3429 | ||
|---|---|---|---|
| Line 169... | Line 169... | ||
| 169 | { |
169 | { |
| 170 | cons_printf("singlestep hit\n"); |
170 | cons_printf("singlestep hit\n"); |
| 171 | thread_stop(); |
171 | thread_stop(); |
| 172 | } |
172 | } |
| 173 | 173 | ||
| 174 | static int task_connect(int taskid) |
174 | static int task_connect(task_id_t task_id) |
| 175 | { |
175 | { |
| 176 | int rc; |
176 | int rc; |
| 177 | unsigned evmask; |
177 | unsigned evmask; |
| 178 | 178 | ||
| 179 | cons_printf("ipc_connect_kbox(%d)... ", taskid); |
179 | cons_printf("ipc_connect_kbox(%;;d)... ", task_id); |
| 180 | rc = ipc_connect_kbox(taskid); |
180 | rc = ipc_connect_kbox(task_id); |
| 181 | cons_printf("-> %d\n", rc); |
181 | cons_printf("-> %d\n", rc); |
| 182 | app_phone = rc; |
182 | app_phone = rc; |
| 183 | if (rc < 0) return rc; |
183 | if (rc < 0) return rc; |
| 184 | 184 | ||
| 185 | cons_printf("udebug_begin()... "); |
185 | cons_printf("udebug_begin()... "); |
| Line 326... | Line 326... | ||
| 326 | dt->fid = fid; |
326 | dt->fid = fid; |
| 327 | 327 | ||
| 328 | fibril_add_ready(fid); |
328 | fibril_add_ready(fid); |
| 329 | } |
329 | } |
| 330 | 330 | ||
| 331 | static void debug_active_task(void) |
331 | static void debug_active_task(task_id_t task_id) |
| 332 | { |
332 | { |
| 333 | int taskid; |
333 | int taskid; |
| 334 | int i; |
334 | int i; |
| 335 | int rc; |
335 | int rc; |
| 336 | 336 | ||
| 337 | thash_t *thash_buffer; |
337 | thash_t *thash_buffer; |
| 338 | int n_threads; |
338 | int n_threads; |
| 339 | 339 | ||
| 340 | cons_printf("Breakpoint Debugger\n"); |
340 | cons_printf("Breakpoint Debugger\n"); |
| 341 | cons_printf("Press 'c' to connect\n"); |
- | |
| 342 | while ((i = getchar()) != 'c') |
- | |
| 343 | putchar(i); |
- | |
| 344 | 341 | ||
| 345 | taskid = /*13 mips32*/13; |
- | |
| 346 | rc = task_connect(taskid); |
342 | rc = task_connect(task_id); |
| 347 | if (rc < 0) { |
343 | if (rc < 0) { |
| 348 | cons_printf("Failed to connect to task %d\n", taskid); |
344 | cons_printf("Failed to connect to task %lld\n", task_id); |
| 349 | return; |
345 | return; |
| 350 | } |
346 | } |
| 351 | 347 | ||
| 352 | cons_printf("Connected to task %d\n", taskid); |
348 | cons_printf("Connected to task %lld\n", task_id); |
| 353 | 349 | ||
| 354 | rc = get_thread_list(&thash_buffer, &n_threads); |
350 | rc = get_thread_list(&thash_buffer, &n_threads); |
| 355 | if (rc < 0) { |
351 | if (rc < 0) { |
| 356 | cons_printf("Failed to get thread list\n", rc); |
352 | cons_printf("Failed to get thread list\n", rc); |
| 357 | return; |
353 | return; |
| Line 388... | Line 384... | ||
| 388 | list_initialize(&dthreads); |
384 | list_initialize(&dthreads); |
| 389 | breakpoint_init(); |
385 | breakpoint_init(); |
| 390 | cwt = NULL; |
386 | cwt = NULL; |
| 391 | } |
387 | } |
| 392 | 388 | ||
| 393 | int main(void) |
389 | static void print_syntax() |
| 394 | { |
390 | { |
| 395 | main_init(); |
391 | printf("syntax: debug <task_id>\n"); |
| - | 392 | } |
|
| 396 | 393 | ||
| - | 394 | int main(int argc, char *argv[]) |
|
| - | 395 | { |
|
| - | 396 | task_id_t task_id; |
|
| - | 397 | char *err_p; |
|
| - | 398 | ||
| 397 | while (1) { |
399 | if (argc != 2) { |
| - | 400 | printf("Mising argument\n"); |
|
| 398 | debug_active_task(); |
401 | print_syntax(); |
| - | 402 | return 1; |
|
| 399 | } |
403 | } |
| - | 404 | ||
| - | 405 | task_id = strtol(argv[1], &err_p, 10); |
|
| - | 406 | ||
| - | 407 | if (*err_p) { |
|
| - | 408 | printf("Task ID syntax error\n"); |
|
| - | 409 | print_syntax(); |
|
| - | 410 | return 1; |
|
| - | 411 | } |
|
| - | 412 | ||
| - | 413 | main_init(); |
|
| - | 414 | debug_active_task(task_id); |
|
| 400 | } |
415 | } |
| 401 | 416 | ||
| 402 | /** @} |
417 | /** @} |
| 403 | */ |
418 | */ |