User Tools

Site Tools


sk2:debug_tools

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
sk2:debug_tools [2021/03/31 11:47] – [gdb] jkonczaksk2:debug_tools [2026/10/29 15:24] (current) – jkonczak
Line 25: Line 25:
 <html><small></html> <html><small></html>
  
-W C+''''+ nazwy funkcji w trakcie kompilacji są zniekształcone (ang. mangled)+W C+%%%%+ nazwy funkcji w trakcie kompilacji są zniekształcone (ang. mangled)
 tak by linker poradził sobie z namespace'ami, temple'ami i funkcjami o tej samej tak by linker poradził sobie z namespace'ami, temple'ami i funkcjami o tej samej
 nazwie z różną listą parametrów. <html><table style="margin:0; border:0"> nazwie z różną listą parametrów. <html><table style="margin:0; border:0">
Line 32: Line 32:
 <tr><td style="padding:0; border:0">w binarce nazywa się:</td><td style="padding:0; border:0"><code>_ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000EEE5countEv</code></td></tr> <tr><td style="padding:0; border:0">w binarce nazywa się:</td><td style="padding:0; border:0"><code>_ZNKSt6chrono8durationIlSt5ratioILl1ELl1000000EEE5countEv</code></td></tr>
 </table></html> </table></html>
-Aby dostać z powrotem czytelną nazwę, należy użyć programu ''c+////+filt <nazwa>''+Aby dostać z powrotem czytelną nazwę, należy użyć programu ''c+%%%%+filt <nazwa>''
 lub ustawić odpowiednią opcję narzędzia które wypluwa nieczytelne nazwy tak, by lub ustawić odpowiednią opcję narzędzia które wypluwa nieczytelne nazwy tak, by
 przekształcało je do czytelnej formy (demangling). W ''valgrind'' i ''gdb'' przekształcało je do czytelnej formy (demangling). W ''valgrind'' i ''gdb''
Line 155: Line 155:
 pierwszym argumentem (nazwa funkcji //w binarce//, więc np. ''_ZN3foo3barEi'' a pierwszym argumentem (nazwa funkcji //w binarce//, więc np. ''_ZN3foo3barEi'' a
 nie ''namespace foo { void bar(int baz); }''): \\ nie ''namespace foo { void bar(int baz); }''): \\
-''# bpftrace -e 'uprobe:/pełna/ścieżka/do/programu:nazwa_funkcji {printf("Foo: %ld\n", arg0);}' '' \\+''# bpftrace -e 'uprobe:/pełna/ścieżka/do/programu:nazwa_funkcji {printf("Foo: %ld\n", arg0);}'%%%%'' \\
 ''$ /pełna/ścieżka/do/programu argument1 argument2'' ''$ /pełna/ścieżka/do/programu argument1 argument2''
  
Line 226: Line 226:
  
 Wywołanie (dla pliku zrzutu pamięci ''core_dump''' programu ''a.out''):\\ Wywołanie (dla pliku zrzutu pamięci ''core_dump''' programu ''a.out''):\\
-''gdb -c core_dump ./a.out ''\\+''gdb -c core_dump ./a.out''\\
 ''(gdb) ………'' ''(gdb) ………''
  
Line 262: Line 262:
 ==== scan-build z llvm ==== ==== scan-build z llvm ====
  
-''scan-build'' to analizator statyczny dla C/C+''''+ "w pakiecie" z clang i LLVM.+''scan-build'' to analizator statyczny dla C/C+%%%%+ "w pakiecie" z clang i LLVM.
  
-Dla przykładowego użycia sprawdź: https://clang-analyzer.llvm.org/scan-build.html+Dla przykładowego użycia sprawdź: https://clang.llvm.org/docs/analyzer/user-docs/CommandLineUsage.html#scan-build
  
 Jeśli scan-build znajdzie problemy na etapie analizy statycznej, wygeneruje Jeśli scan-build znajdzie problemy na etapie analizy statycznej, wygeneruje
Line 271: Line 271:
 ==== cppcheck ==== ==== cppcheck ====
  
-''cppcheck'' to w miarę sensowny analizator statyczny dla C+''''+.+''cppcheck'' to w miarę sensowny analizator statyczny dla C+%%%%+.
  
 Przykładowe użycie – analizuje pliki w bieżącym katalogu:\\ Przykładowe użycie – analizuje pliki w bieżącym katalogu:\\
sk2/debug_tools.txt · Last modified: by jkonczak