如何为asm函数生成调试信息? 例如,我用C++的程序编写了一个简单的ASM函数,使用 ASM。但即使我使用-g来编译程序,我仍然找不到asm函数的.debug_框架 __asm__ ( ".text\n\t" ".align 2\n\t" ".globl " SYMBOL_UNDERSCORE "do_some_test\n\t" // do some thing )

如何为asm函数生成调试信息? 例如,我用C++的程序编写了一个简单的ASM函数,使用 ASM。但即使我使用-g来编译程序,我仍然找不到asm函数的.debug_框架 __asm__ ( ".text\n\t" ".align 2\n\t" ".globl " SYMBOL_UNDERSCORE "do_some_test\n\t" // do some thing ),c++,linux,gcc,assembly,gnu-assembler,C++,Linux,Gcc,Assembly,Gnu Assembler,我使用readelf-wf无法找到函数do\u some\u test的调试框架。那我怎么才能得到它呢 任何特定的编译器/汇编器?这可能是一个愚蠢的问题,但是你在哪里写了//做一些事情,你从开始做一些测试:(注意冒号表示标签)?对不起,我听不懂你的意思。符号“do_some_test”是我的asm函数名,//do some thing就像push ebp一样。函数中没有所有的代码。虽然do_some_test是函数名,但您还没有告诉gcc。您所做的只是说您有一个名为do\u some\u tes

我使用readelf-wf无法找到函数do\u some\u test的调试框架。那我怎么才能得到它呢

任何特定的编译器/汇编器?这可能是一个愚蠢的问题,但是你在哪里写了
//做一些事情
,你从
开始做一些测试:
(注意冒号表示标签)?对不起,我听不懂你的意思。符号“do_some_test”是我的asm函数名,//do some thing就像push ebp一样。函数中没有所有的代码。虽然
do_some_test
是函数名,但您还没有告诉gcc。您所做的只是说您有一个名为
do\u some\u test
的全局符号。我认为您还需要在
.globl
声明和实际代码(您的
//do some
)之间创建一个标签
do\u test:
)。希望gcc能解决全局符号是函数名的问题。谢谢,我已经用.cfi_def_cfa_offset等解决了我的问题。