Zxdb 是一種非同步偵錯工具,可讓使用者與 在程序或執行緒執行或停止時顯示偵錯工具。
Zxdb 會在輸入的指令中使用名詞、動詞和指令模型。這份文件 醒目顯示 zxdb 偵錯工具的主要功能
Debugger 模型
使用 zxdb 時,只要結合 noun
和
verb
。
名詞
可能的名詞 (及其縮寫) 如下:
breakpoint
(bp
)選取或列出中斷點。
filter
選取或列出程序篩選條件。
frame
(f
)選取或列出堆疊框架。
global
(gl
)指令的全域覆寫值。
process
(pr
)選取或列出程序結構定義。
sym-server
選取或列出符號伺服器。
thread
(t
)選取或列出討論串。
列出名詞
如果自行輸入名詞,會列出該類型的可用物件。例如:
中斷點
列出工作階段中的所有中斷點:
[zxdb] breakpoint
# scope stop enabled type Condition #addrs hit-count location
1 global all true software command_line.has_argv0 == false 1 0 ../../src/cobalt/bin/app/cobalt_main.cc:352
調整裁剪大小
列出目前的執行緒中的堆疊框架:
[zxdb] frame
▶ 0 fxl::CommandLineFromIterators<const char *const *>() • command_line.h:203
1 fxl::CommandLineFromArgcArgv() • command_line.h:224
2 main() • main.cc:174
程序
列出附加的程序:
[zxdb] process
# State Koid Name
▶ 1 Not running 3471 debug_agent_unit_tests.cm
執行緒
列出目前程序中的執行緒:
[zxdb] thread
# State Koid Name
▶ 1 Blocked 1348 initial-thread
2 Blocked 1356 some-other-thread
選取有效名詞
您可以選取名詞及其對應索引,將該名詞設為有效的名詞 後續指令設定新的有效名詞時,系統會傳回資訊 新的有效名詞例如:
執行緒
選取執行緒 3 做為日後指令使用的有效名詞:
[zxdb] thread 3
Thread 3 Blocked koid=9940 worker-thread
中斷點
選取中斷點 2 做為使用中的名詞:
[zxdb] breakpoint 2
Breakpoint 2 (Software) on Global, Enabled, stop=All, @ MyFunction
動詞
在 zxdb 中,動詞會與名詞相結合,以指定 zxdb 物件
執行偵錯動作如需 zxdb 動詞的完整清單,請參閱
verbs.h
。
根據預設,動詞如 run
、next
、print
等
目前使用中的名詞 (如要進一步瞭解有效名詞,請參閱
選取有效名詞)。
資料顯示動詞
說明
zxdb 偵錯工具內建了說明系統:
[zxdb] help
你也可以取得特定指令的協助。舉例來說,若要瞭解
step
指令:
[zxdb] help step
屬性與設定
zxdb 偵錯工具物件具有相關聯的設定。您可以指定 自訂 zxdb
擷取
您可以使用 get
動詞,列出指定物件的設定。
舉例來說,您可以取得有效 process
的屬性:
[zxdb] process get
debug-stepping false
display <empty>
show-stdout true
source-map • /b/s/w/ir/x/w/fuchsia-third_party-rust=/usr/local/home/user/fuchsia/out/default/host_x64/../../../prebuilt/third_party/rust/linux-x64/lib/rustlib/src/rust
vector-format double
你也可以搭配使用 get
動詞和特定屬性來列出屬性
和相關說明
舉例來說,如要取得 debug-stepping
屬性的說明,請執行下列動作:
[zxdb] process get debug-stepping
debug-stepping (bool)
Enable very verbose debug logging for thread stepping.
This is used by developers working on the debugger's internal thread
controllers.
debug-stepping = false
設定
您可以使用 set
動詞來設定指定物件的設定或屬性。
舉例來說,您可以將有效 process
的 show-stdout
屬性設為
true
:
[zxdb] process set show-stdout true
Set process 1 show-stdout = true
部分設定為階層式設定。執行緒會沿用自己的程序設定。
進而沿用全域範圍的設定如果您使用 get
動詞
會列出全域設定
目前程序和執行緒的設定。
你可以將通用設定套用至所有執行緒和程序,但不 或覆寫特定情境
舉例來說,您可以將 show-stdout
通用設定設為 false
:
[zxdb] set show-stdout false # Applies to all processes with no override.
Set global show-stdout = false
部分設定會儲存為清單。舉例來說,您可以使用下列任一種
範例設定 symbol-paths
:
使用
=
指定新的值:[zxdb] set symbol-paths = /tmp/symbols /fuchsia-settings/symbols "/fuchsia settings/symbols" Set global symbol-paths = • /tmp/symbols • /fuchsia-settings/symbols • "/fuchsia settings/symbols"
使用
+=
附加至現有值:[zxdb] set symbol-paths += /tmp/symbols2 Set global symbol-paths = • /tmp/symbols • /fuchsia-settings/symbols • "/fuchsia settings/symbols" • /tmp/symbols2
語言
zxdb 會根據目前所用程式設計語言評估運算式 堆疊框架如果目前頁框的語言不同,zxdb 的預設值是 C++。
根據預設,zxdb 會使用 auto
的語言。您可以覆寫預設值
使用 set
動詞。
舉例來說,如要將預設語言設為 rust
:
[zxdb] set language rust
Set global language = rust