如何在GDB中对标签中存储的地址(检查内存)进行处理?
我已经制作了以下示例,其中我尝试检查存储为标签<?xml version="1.0" encoding="UTF-8"?>
<workflow-app xmlns="uri:oozie:workflow:0.2" name="jas-import-wf">
<start to="sqoop-import-air-quality-node"/>
<action name="sqoop-import-air-quality-node">
<sqoop xmlns="uri:oozie:sqoop-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path="${nameNode}/user/${wf:user()}/${examplesRoot}/output-data"/>
<!-- <mkdir path="${nameNode}/user/${wf:user()}/${examplesRoot}/output-data"/> -->
</prepare>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<arg>import</arg>
<arg>--connect</arg>
<arg>jdbc:mysql://xx.xx.xx.xx:3306/xxxx?dontTrackOpenResources=true&defaultFetchSize=1000&useCursorFetch=true&zeroDateTimeBehavior=convertToNull</arg>
<arg>--driver</arg>
<arg>com.mysql.jdbc.Driver</arg>
<arg>--username</arg>
<arg>xx</arg>
<arg>--password</arg>
<arg>xx</arg>
<arg>--query</arg>
<arg>
select <fields> from <table> where $CONDITIONS
</arg>
<arg>--hive-import</arg>
<arg>--hive-drop-import-delims</arg>
<arg>--hive-overwrite</arg>
<arg>--hive-table</arg>
<arg>table</arg>
<arg>--target-dir</arg>
<arg>/user/${wf:user()}/${examplesRoot}/output-data/sqoop-import</arg>
<arg>-m</arg>
<arg>1</arg>
</sqoop>
<ok to="end"/>
<error to="import-air-quality-fail"/>
</action>
<kill name="import-air-quality-fail">
<message>Sqoop from ICP failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
的双字值的内存地址。在这种情况下,地址为0,但一般来说,它可以是任意的。每次尝试都会file_handle
检查地址x
,而不是预期的0x401004
。
我知道我可以复制粘贴地址并将其作为参数提供给0x00
,但我习惯使用*运算符来存储寄存器中存储的值,例如x
。
如何使用相同的技术来遵循存储在标签上的地址而不复制粘贴它?
x *$eax
答案 0 :(得分:0)
假设我们有一个程序:
section .data
file_handle db "some"
...
通过x &file_handle
,我们通过地址file_handle
检查内存。
0x601038 <file_handle>: 0x656d6f73
如果我们想通过file_handle
的内容所指向的位置来检查内存,可以尝试:
x *file_handle
但是我们遇到了错误:'file_handle' has unknown type; cast it to its declared type
因此,在转换为char后(因为我们正在处理db
):
x *(char *)file_handle