Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从.gcc\u表和.eh\u句柄部分恢复异常信息?_C++_Exception_Assembly_X86_Elf - Fatal编程技术网

C++ 如何从.gcc\u表和.eh\u句柄部分恢复异常信息?

C++ 如何从.gcc\u表和.eh\u句柄部分恢复异常信息?,c++,exception,assembly,x86,elf,C++,Exception,Assembly,X86,Elf,对于定义了trycatch的C++程序,使用g++将其编译成汇编代码时(测试在x86 32位Linux上,g++4.6.3) 生成一个名为.gcc\u(表除外)的指定部分,如下所示: .section .gcc_except_table .align 4 .LLSDA980: .byte 0xff .byte 0 .uleb128 .LLSDATT980-.LLSDATTD980 .LLSDAT

对于定义了
try
catch
C++
程序,使用
g++
将其编译成汇编代码时(测试在x86 32位Linux上,
g++
4.6.3)

生成一个名为
.gcc\u(表除外)
的指定部分,如下所示:

        .section        .gcc_except_table
        .align 4
.LLSDA980:
        .byte   0xff
        .byte   0
        .uleb128 .LLSDATT980-.LLSDATTD980
.LLSDATTD980:
        .byte   0x1
        .uleb128 .LLSDACSE980-.LLSDACSB980
.LLSDACSB980:
        .uleb128 .LEHB3-.LFB980
        .uleb128 .LEHE3-.LEHB3
        .uleb128 0
        .uleb128 0
        .uleb128 .LEHB4-.LFB980
        .uleb128 .LEHE4-.LEHB4
        .uleb128 .L19-.LFB980
        .uleb128 0x3
        .uleb128 .LEHB5-.LFB980
        .uleb128 .LEHE5-.LEHB5
        .uleb128 0
        .uleb128 0
        .uleb128 .LEHB6-.LFB980
        .uleb128 .LEHE6-.LEHB6
        .uleb128 .L20-.LFB980
        .uleb128 0
        .uleb128 .LEHB7-.LFB980
        .uleb128 .LEHE7-.LEHB7
        .uleb128 .L21-.LFB980
        .uleb128 0
ELF
格式编译成
exe文件
后,似乎有两部分与异常处理相关,分别是
.gcc\u except\u table
.eh\u frame

但是,我使用以下命令转储了这两部分的内容,将标签的内存地址与
.gcc\u except\u table
中定义的内容进行比较,但对我来说太模糊了

objdump -s -j .gcc_except_table cppexcept
objdump -s -j .eh_frame cppexcept
所以我的问题是:

是否有任何方法可以从RE.SE上的
ELF
文件的
.gcc\u except\u table
eh\u frame
表格中恢复
.gcc\u except\u table
(如上所示)中定义的信息?

。请不要横穿柱子,这是很危险的。
objdump -s -j .gcc_except_table cppexcept
objdump -s -j .eh_frame cppexcept