Heim Datenbank MySQL-Tutorial 在gdb中显示unicode等几则调试技巧

在gdb中显示unicode等几则调试技巧

Jun 07, 2016 pm 03:35 PM
gdb unicode 技巧 显示 调试

在 gdb中显示unicode等几则调试技巧 http://blog.csdn.net/absurd 作者联系方式: Li XianJing xianjimli at hotmail dot com 更新时间: 2007-3-21 这几天调试 mozilla 时,有两个问题一直困扰着我:一是无法从接口指针指向的实例得到具体实例的信息。二是

gdb中显示unicode等几则调试技巧

 

http://blog.csdn.net/absurd

作者联系方式:Li XianJing

更新时间:2007-3-21

 

这几天调试mozilla时,有两个问题一直困扰着我:一是无法从接口指针指向的实例得到具体实例的信息。二是无法显示unicode。今天在mozilla网站上找到了这个问题的解决方法,这里做个笔记。

 

为了便于说明,我写了个小程序:

#include

 

classIntf

{

public:

         Intf(){};

         virtual ~Intf(){};

 

         virtualintDo() = 0;

};

 

classImpl: publicIntf

{

public:

         Impl(constwchar_t* str);

         ~Impl();

 

         intDo();

 

private:

         constwchar_t* m_str;

};

 

Impl::Impl(constwchar_t* str)

{

         m_str = str;

}

 

Impl::~Impl()

{

}

 

intImpl::Do(void)

{

         return 0;

}

 

inttest(Intf* pIntf)

{

         returnpIntf->Do();

}

 

intmain(intargc, char* argv[])

{

         Intf* pIntf = newImpl(L"abc");

 

         returntest(pIntf);

}

 

存为main.c,然后编译生成test.exe

gcc -g main.cpp -lstdc++ -o test.exe

 

gdb下运行,并在test函数中设置断点:

(gdb) b test

Breakpoint 1 at 0x8048644: file main.cpp, line 40.

(gdb) r

Starting program: /work/test/gdb/test.exe

Reading symbols from shared object read from target memory...done.

Loaded system supplied DSO at 0xb83000

 

Breakpoint 1, test (pIntf=0x8a3e008) at main.cpp:40

40              return pIntf->Do();

(gdb) p *pIntf

$1 = {_vptr.Intf = 0x8048810}

 

1.         查看pIntf的实现。

(gdb) x /wa pIntf

0x8a3e008:      0x8048810 <_ztv4impl>

 

ZTV4Impl pIntf的虚表指针,它暗示其实现类为Impl。按下列方式我们就可以显示其具体实例的信息:

(gdb) p *(Impl*)pIntf

$2 = { = {_vptr.Intf = 0x8048810}, m_str = 0x8048834}

 

2.         查看unicode字符串。

(gdb) x /6ch ((Impl*)pIntf)->m_str 

0x8048834 <_ztv4intf>:       97 'a'  0 '/0'  98 'b'  0 '/0'  99 'c'  0 '/0'

 

其中6表示要显示的长度。

这种方式只能显示英文的unicode,中文仍然显示不了,不过总比没有强多了。

 

~~end~~

 

 
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Detaillierte Erläuterung des Debuggens von C++-Funktionen: Wie debuggt man Probleme in Multithread-Funktionen? Detaillierte Erläuterung des Debuggens von C++-Funktionen: Wie debuggt man Probleme in Multithread-Funktionen? May 02, 2024 pm 04:15 PM

C++-Multithread-Debugging kann GDB verwenden: 1. Debugging-Informationskompilierung aktivieren; Tatsächlicher Fall-Debugging-Deadlock: 1. Verwenden Sie threadapplyallbt, um den Stack zu drucken. 3. Führen Sie einen Einzelschritt für den Haupt-Thread aus.

Wie verwende ich LeakSanitizer zum Debuggen von C++-Speicherlecks? Wie verwende ich LeakSanitizer zum Debuggen von C++-Speicherlecks? Jun 02, 2024 pm 09:46 PM

Wie verwende ich LeakSanitizer zum Debuggen von C++-Speicherlecks? Installieren Sie LeakSanitizer. Aktivieren Sie LeakSanitizer über das Kompilierungsflag. Führen Sie die Anwendung aus und analysieren Sie den LeakSanitizer-Bericht. Identifizieren Sie Speicherzuordnungstypen und Zuweisungsorte. Beheben Sie Speicherlecks und stellen Sie sicher, dass der gesamte dynamisch zugewiesene Speicher freigegeben wird.

Verknüpfung zum Debuggen und Analysieren von Golang-Funktionen Verknüpfung zum Debuggen und Analysieren von Golang-Funktionen May 06, 2024 pm 10:42 PM

In diesem Artikel werden Verknüpfungen für das Debuggen und Analysieren von Go-Funktionen vorgestellt, einschließlich des integrierten Debuggers dlv, der zum Anhalten der Ausführung, zum Überprüfen von Variablen und zum Festlegen von Haltepunkten verwendet wird. Protokollierung: Verwenden Sie das Protokollpaket, um Nachrichten aufzuzeichnen und sie während des Debuggens anzuzeigen. Das Leistungsanalysetool pprof generiert Anrufdiagramme und analysiert die Leistung und verwendet gotoolpprof zur Datenanalyse. Praktischer Fall: Analysieren Sie Speicherlecks über pprof und generieren Sie ein Aufrufdiagramm, um die Funktionen anzuzeigen, die Lecks verursachen.

Wie führt man Parallelitätstests und Debugging in der Java-Parallelprogrammierung durch? Wie führt man Parallelitätstests und Debugging in der Java-Parallelprogrammierung durch? May 09, 2024 am 09:33 AM

Parallelitätstests und Debugging Parallelitätstests und Debugging in der gleichzeitigen Java-Programmierung sind von entscheidender Bedeutung und die folgenden Techniken stehen zur Verfügung: Parallelitätstests: Unit-Tests: Isolieren und testen Sie eine einzelne gleichzeitige Aufgabe. Integrationstests: Testen der Interaktion zwischen mehreren gleichzeitigen Aufgaben. Lasttests: Bewerten Sie die Leistung und Skalierbarkeit einer Anwendung unter hoher Last. Parallelitäts-Debugging: Haltepunkte: Thread-Ausführung anhalten und Variablen überprüfen oder Code ausführen. Protokollierung: Thread-Ereignisse und -Status aufzeichnen. Stack-Trace: Identifizieren Sie die Quelle der Ausnahme. Visualisierungstools: Überwachen Sie die Thread-Aktivität und die Ressourcennutzung.

So debuggen Sie asynchronen PHP-Code So debuggen Sie asynchronen PHP-Code May 31, 2024 am 09:08 AM

Zu den Tools zum Debuggen von asynchronem PHP-Code gehören: Psalm: ein statisches Analysetool, das potenzielle Fehler findet. ParallelLint: Ein Tool, das asynchronen Code prüft und Empfehlungen gibt. Xdebug: Eine Erweiterung zum Debuggen von PHP-Anwendungen durch Aktivieren einer Sitzung und schrittweises Durchgehen des Codes. Weitere Tipps umfassen die Verwendung von Protokollierung, Assertionen, die lokale Ausführung von Code und das Schreiben von Komponententests.

Samsung wird Displays für Microsofts MR-Headsets bereitstellen, und die Geräte sollen leichter sein und klarere Displays haben Samsung wird Displays für Microsofts MR-Headsets bereitstellen, und die Geräte sollen leichter sein und klarere Displays haben Aug 10, 2024 pm 09:45 PM

Kürzlich haben Samsung Display und Microsoft eine wichtige Kooperationsvereinbarung unterzeichnet. Gemäß der Vereinbarung wird Samsung Display Hunderttausende OLEDoS-Panels für am Kopf montierte Mixed-Reality-Geräte (MR) entwickeln und liefern. Microsoft entwickelt voraussichtlich ein MR-Gerät für Multimedia-Inhalte wie Spiele und Filme Die Markteinführung erfolgt nach Fertigstellung der OLEDoS-Spezifikationen, dient hauptsächlich dem kommerziellen Bereich und wird voraussichtlich bereits 2026 ausgeliefert. OLEDoS-Technologie (OLED on Silicon) OLEDoS ist eine neue Anzeigetechnologie, bei der OLED auf einem Siliziumsubstrat aufgebracht wird. Im Vergleich zu herkömmlichen Glassubstraten ist es dünner und weist höhere Pixel auf. OLEDoS-Display und normales Display

PHP-Debugging-Fehler: Ein Leitfaden für häufige Fehler PHP-Debugging-Fehler: Ein Leitfaden für häufige Fehler Jun 05, 2024 pm 03:18 PM

Zu den häufigsten PHP-Debugging-Fehlern gehören: Syntaxfehler: Überprüfen Sie die Codesyntax, um sicherzustellen, dass keine Fehler vorliegen. Undefinierte Variable: Bevor Sie eine Variable verwenden, stellen Sie sicher, dass sie initialisiert und ihr ein Wert zugewiesen ist. Fehlende Semikolons: Fügen Sie allen Codeblöcken Semikolons hinzu. Funktion ist undefiniert: Überprüfen Sie, ob der Funktionsname richtig geschrieben ist und stellen Sie sicher, dass die richtige Datei oder PHP-Erweiterung geladen ist.

Welche Debugging-Techniken gibt es für rekursive Aufrufe in Java-Funktionen? Welche Debugging-Techniken gibt es für rekursive Aufrufe in Java-Funktionen? May 05, 2024 am 10:48 AM

Zum Debuggen rekursiver Funktionen stehen die folgenden Techniken zur Verfügung: Überprüfen Sie den Stack-Trace. Legen Sie Debug-Punkte fest. Überprüfen Sie, ob der Basisfall korrekt implementiert ist. Zählen Sie die Anzahl der rekursiven Aufrufe. Visualisieren Sie den rekursiven Stack

See all articles