如何在GDB中对标签中存储的地址(检查内存)进行处理?

时间:2016-10-30 10:35:34

标签: debugging gdb nasm

  

如何在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&amp;defaultFetchSize=1000&amp;useCursorFetch=true&amp;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

1 个答案:

答案 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