Zxdb 是一个异步调试程序,可让用户与 调试程序。
Zxdb 对输入的命令使用名词、动词和命令模型。此文档 突出显示了 zxdb 调试程序的主要功能。
调试程序模型
使用 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