Difference between revisions of "LU-LSP-b13:LA"
(New page: === Linux lietotāja programmatūras atkļūdošanas rīki === * '''GDB''' - GNU debugger * '''valgrind''' - apvieno sevī vairākus jaudīgus rīkus: dinamiskās atmiņas lietošanas pā...) |
|||
| Line 1: | Line 1: | ||
=== Linux lietotāja programmatūras atkļūdošanas rīki === |
=== Linux lietotāja programmatūras atkļūdošanas rīki === |
||
* ''' |
* '''gdb''' - GNU debugger |
||
** '''gdbserver''' - GDB papildprogramma attālinātai atklūdošanai. gdbserver var palaist, piemēram, uz iegultas sistēmas bez grafiskās saskarnes, un atkļūdot tur esošās programmas caur TCP savienojumu, pieslēdzoties ar "parasto" GDB kā ar klientu. |
|||
* '''valgrind''' - apvieno sevī vairākus jaudīgus rīkus: dinamiskās atmiņas lietošanas pārbaudes rīku (<code>--tool=memcheck</code>), profilētāju (<code>--tool=callgrind</code>) u.c. |
* '''valgrind''' - apvieno sevī vairākus jaudīgus rīkus: dinamiskās atmiņas lietošanas pārbaudes rīku (<code>--tool=memcheck</code>), profilētāju (<code>--tool=callgrind</code>) u.c. |
||
* '''objdump''' - disasemblēšanas rīks |
* '''objdump''' - disasemblēšanas rīks |
||
Revision as of 15:20, 12 November 2013
Linux lietotāja programmatūras atkļūdošanas rīki
- gdb - GNU debugger
- gdbserver - GDB papildprogramma attālinātai atklūdošanai. gdbserver var palaist, piemēram, uz iegultas sistēmas bez grafiskās saskarnes, un atkļūdot tur esošās programmas caur TCP savienojumu, pieslēdzoties ar "parasto" GDB kā ar klientu.
- valgrind - apvieno sevī vairākus jaudīgus rīkus: dinamiskās atmiņas lietošanas pārbaudes rīku (
--tool=memcheck), profilētāju (--tool=callgrind) u.c. - objdump - disasemblēšanas rīks
- /proc failusistēma - visa veida informācija par procesiem un sistēmas resursiem
- strace &a ltrace utilītas, ptrace sistēmas izsaukums - konkrēta procesa darbības izsekošana
- Dažāda veida informācija par resursu lietojumu:
- ps - procesi
- top/htop - aktīvākie procesi
- nstat - tīkls ("network status")
- vmstat - atmiņa ("virtual memory status")
- Vēl cita veida informācija par resursu lietojumu (vairāk kodola un HW atkļūdošanai?):
- lsusb - parādīt pieslēgtās USB ierīces
- lspci - parādīt pieslēgtās PCI ierīces
- lsof - parādīt atvērtos failus
Piemērs
Atkļūdojamās programmas kods:
#include <stdio.h>
#include <stdlib.h>
void nullDeref(int *p) {
*p = 0x1234;
}
void f(int param);
void g(void) {
printf("calling g\n");
f(0);
}
void f(int param) {
int localVariable = 1;
printf("calling f, &localVariable=%p\n", &localVariable);
g();
}
void stackOverflow(void) {
f(1);
}
void memoryAllocate(void) {
int i, j;
char *array = malloc(10);
i = j = 5;
while (i-- >= 0) {
array[i] = 0x13;
}
while (j++ >= 0) {
array[j] = 0x13;
}
}
int main(void) {
int i;
int *p = NULL;
nullDeref(p);
stackOverflow();
for (i = 0; i < 100; ++i) {
memoryAllocate();
}
return 0;
}