相关疑难解决方法(0)

如何选择两个标记图案之间的线条,这些线条可能会出现awk/sed多次

使用awksed如何选择两种不同标记图案之间的线条?可能有多个标有这些图案的部分.

例如:假设文件包含:

abc
def1
ghi1
jkl1
mno
abc
def2
ghi2
jkl2
mno
pqr
stu
Run Code Online (Sandbox Code Playgroud)

并且起始模式是abc和结束模式是mno So,我需要输出为:

def1
ghi1
jkl1
def2
ghi2
jkl2
Run Code Online (Sandbox Code Playgroud)

我使用sed匹配模式一次:

sed -e '1,/abc/d' -e '/mno/,$d' <FILE>
Run Code Online (Sandbox Code Playgroud)

有没有办法在sedawk 反复做,直到文件的结尾?

unix shell awk sed pattern-matching

114
推荐指数
5
解决办法
14万
查看次数

如何撤消strip - 即将符号添加回剥离的二进制文件

我有一个剥离的二进制和符号文件.是否可以将符号添加回二进制文件并创建未提取的二进制文件.

我的用例是使用这个带w/valgrind的二进制文件.

linux gdb valgrind strip

21
推荐指数
3
解决办法
5141
查看次数

我可以给objdump一个地址并让它反汇编包含的函数吗?

我发现为了获得足够的上下文以查看导致崩溃的原因,必须反汇编大量的库代码真的很烦人.有什么方法我可以直接objdump一个地址,让它为我找到包含函数的边界?

编辑:更好的是,我可以让它拆卸整个堆栈跟踪吗?

c debugging objdump disassembly

13
推荐指数
1
解决办法
1万
查看次数

如何处理“DWARF 错误:.debug_info 部分大于其文件大小!”?

寻找在我的二进制文件(准确地说.so)中查看特定函数的生成汇编程序的方法,就像我在Compiler Explorer上看到类似的那样,我发现了How to disassemble one single function using objdump? 并根据那里的答案(以及我的进一步搜索)我最终使用了以下命令:

objdump --wide --no-address --no-show-raw-insn [--demangle] --disassemble="<symbol>" -- "<binary>"
Run Code Online (Sandbox Code Playgroud)

<symbol>我发现使用的地方:

objdump --syms [--demangle] -- "<binary>" | grep <function>
Run Code Online (Sandbox Code Playgroud)

其中,the 又<function>是我感兴趣的 C++ 函数名称。当然,the<symbol>是一个损坏的名称。(为了完整起见,我得到了两个结果 - 一个是预期的结果,另一个是带.cold后缀的结果,由“主结果”使用。)


结果已经很扎实了。然而,浏览objdump选项后我看到了有希望的选项:

  • -C/ --demangle,
  • -l/ --line-numbers,
  • -S/ --source

但是,我无法让他们工作......

INITIAL:第一个 ( -C/ --demangle) 导致根本不打印任何反汇编代码。如果没有它,在该Disassembly of section .text:行之后我会有一行带有符号的行,后跟反汇编。使用此选项时,不会显示符号和反汇编,而是Disassembly of section .fini: …

elf debug-symbols objdump disassembly dwarf

13
推荐指数
1
解决办法
7851
查看次数

标签 统计

disassembly ×2

objdump ×2

awk ×1

c ×1

debug-symbols ×1

debugging ×1

dwarf ×1

elf ×1

gdb ×1

linux ×1

pattern-matching ×1

sed ×1

shell ×1

strip ×1

unix ×1

valgrind ×1