360_debugging_tools.doxy 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /*
  2. * This file is part of the StarPU Handbook.
  3. * Copyright (C) 2009--2011 Universit@'e de Bordeaux
  4. * Copyright (C) 2010, 2011, 2012, 2013, 2014, 2016 CNRS
  5. * Copyright (C) 2011, 2012 INRIA
  6. * See the file version.doxy for copying conditions.
  7. */
  8. /*! \page DebuggingTools Debugging Tools
  9. StarPU provides several tools to help debugging applications. Execution traces
  10. can be generated and displayed graphically, see \ref GeneratingTracesWithFxT.
  11. \section DebuggingInGeneral TroubleShooting In General
  12. Generally-speaking, if you have troubles, pass \ref enable-debug "--enable-debug" to
  13. <c>./configure</c> to enable some checks which impact performance, but will
  14. catch common issues, possibly earlier than the actual problem you are observing,
  15. which may just be a consequence of a bug that happened earlier. If your program
  16. is valgrind-safe, you can use it, see \ref UsingOtherDebugger.
  17. Then, if your program crashes with an assertion error, a segfault, etc. you can send us the result of
  18. \verbatim
  19. thread apply all bt
  20. \endverbatim
  21. run in <c>gdb</c> at the point of the crash.
  22. In case your program just hangs, but it may also be useful in case of a crash
  23. too, it helps to source <c>gdbinit</c> as described in the next section to be
  24. able to run and send us the output of the following commands:
  25. \verbatim
  26. starpu-workers
  27. starpu-tasks
  28. starpu-print-requests
  29. starpu-print-prequests
  30. starpu-print-frrequests
  31. starpu-print-irrequests
  32. \endverbatim
  33. To give us an idea of what is happening within StarPU. If the outputs are not too long, you can even run
  34. \verbatim
  35. starpu-all-tasks
  36. starpu-print-all-tasks
  37. starpu-print-datas-summary
  38. starpu-print-datas
  39. \endverbatim
  40. \section UsingGdb Using The Gdb Debugger
  41. Some <c>gdb</c> helpers are provided to show the whole StarPU state:
  42. \verbatim
  43. (gdb) source tools/gdbinit
  44. (gdb) help starpu
  45. \endverbatim
  46. For instance,
  47. <ul>
  48. <li> one can print all tasks with <c>starpu-print-all-tasks</c>, </li>
  49. <li> print all datas with <c>starpu-print-datas</c>, </li>
  50. <li> print all pending data transfers with <c>starpu-print-prequests</c>, <c>starpu-print-requests</c>, <c>starpu-print-frequests</c>, <c>starpu-print-irequests</c>,</li>
  51. <li> print pending MPI requests with <c>starpu-mpi-print-detached-requests</c></li>
  52. </ul>
  53. Some functions can only work if \ref enable-debug "--enable-debug"
  54. was passed to <c>./configure</c>
  55. (because they impact performance)
  56. \section UsingOtherDebugger Using Other Debugging Tools
  57. Valgrind can be used on StarPU: valgrind.h just needs to be found at <c>./configure</c>
  58. time, to tell valgrind about some known false positives and disable host memory
  59. pinning. Other known false positives can be suppressed by giving the suppression
  60. files in <c>tools/valgrind/*.suppr</c> to valgrind's <c>--suppressions</c> option.
  61. The environment variable \ref STARPU_DISABLE_KERNELS can also be set to <c>1</c> to make
  62. StarPU does everything (schedule tasks, transfer memory, etc.) except actually
  63. calling the application-provided kernel functions, i.e. the computation will not
  64. happen. This permits to quickly check that the task scheme is working properly.
  65. \section UsingTheTemanejoTaskDebugger Using The Temanejo Task Debugger
  66. StarPU can connect to Temanejo >= 1.0rc2 (see
  67. http://www.hlrs.de/temanejo), to permit
  68. nice visual task debugging. To do so, build Temanejo's <c>libayudame.so</c>,
  69. install <c>Ayudame.h</c> to e.g. <c>/usr/local/include</c>, apply the
  70. <c>tools/patch-ayudame</c> to it to fix C build, re-<c>./configure</c>, make
  71. sure that it found it, rebuild StarPU. Run the Temanejo GUI, give it the path
  72. to your application, any options you want to pass it, the path to <c>libayudame.so</c>.
  73. It permits to visualize the task graph, add breakpoints, continue execution
  74. task-by-task, and run <c>gdb</c> on a given task, etc.
  75. \image html temanejo.png
  76. \image latex temanejo.png "" width=\textwidth
  77. Make sure to specify at least the same number of CPUs in the dialog box as your
  78. machine has, otherwise an error will happen during execution. Future versions
  79. of Temanejo should be able to tell StarPU the number of CPUs to use.
  80. Tag numbers have to be below <c>4000000000000000000ULL</c> to be usable for
  81. Temanejo (so as to distinguish them from tasks).
  82. */