char* x = "asd\nqwe\n ... "
i chcę wydrukować go ze znakami nowej linii drukowanych jak nowe linie nie backslashem n. Czy to możliwe?
char* x = "asd\nqwe\n ... "
i chcę wydrukować go ze znakami nowej linii drukowanych jak nowe linie nie backslashem n. Czy to możliwe?
Aktualizacja: Dlaczego po prostu nie użyć polecenia gdb printf
?
(gdb) printf "%s", x
asd
qwe
...
(gdb)
Old odpowiedź: Od wewnątrz debuggera można wykonywać polecenia. Wystarczy zadzwonić printf
(gdb) call printf("%s", x)
asd
qwe
...
(gdb)
Nie mogę używać stdout lub stderr, ponieważ te kanały są dołączone do innego programu. –
Splendid. Dzięki. –
Należy zauważyć, że ważne jest, aby zakończyć polecenie printf za pomocą a/n, jeśli znak * jeszcze się nie kończy. –
Użyj specyfikator wyrażenie:
print /s x
Jest to zdecydowanie lepsze niż wywoływanie funkcji programu debugowanego, takich jak 'printf', ale może działać tylko na stosunkowo nowych wersjach GDB: wydajność kopalni" Format litera "" na przykład nie ma znaczenia w komendzie "drukuj". –
To nie działa, gdy 'x' jest zmienną inną niż adres, w takim przypadku trzeba użyć polecenia' x', np. 'X/sx', lub potrzebujesz konwersji typu, np.' P (char *) & x' . –
Nie będzie działać, jeśli ciąg jest większy niż pewna długość. Jest przycinany podczas drukowania. Metoda printf drukuje pełny ciąg znaków. – sadashiv30
jeśli nic innego działa, można wymienić '\ n' z '\ x0a' - to char nowego wiersza bezpośrednio. – slashmais
@slashmais: To będzie nadal wyświetlane jako '\ n' w wyjściu gdb. – ezpz
Właściwie, przyszedłem tutaj, aby uzyskać metodę DRUKUJ \ n>.> .. Udało mi się to zrobić: print (char *) [ nsstring cString] – Mazyod