如何在menuconfig中找到Linux配置选项?

时间:2017-10-04 21:24:56

标签: linux-kernel embedded-linux

各种网页告诉我要在Linux内核中获得完整的真实堆栈回溯,我需要在我的.config文件中设置CONFIG_FRAME_POINTER=y。所以我运行make menuconfig并尝试在那里找到它,但它很难直观地导航到这里。我搜索网页并找到许多说要启用它的页面,但是没有页面告诉我要进行深入研究的菜单选项。所以我想也许我可以运行make config然后点击[Enter]一百万次来选择所有内容的当前配置选项,然后将整个命令窗口缓冲区内容复制粘贴到文本文件&搜索(不区分大小写)" frame_pointer"或"帧指针",但仍然没有运气;显然我必须选择' y'一些子菜单甚至可以深入到任何地方。

如何在config或menuconfig中找到这样的选项?是否在某处列出了选项配置层次结构?

更新

我正在使用Linux Kernel v2.6.30.4-uc0;这就是我使用Lantronix XPort Pro SDK所提供的功能。

根据我得到的答案,我使用/搜索选项(不确定我之前是如何错过的),但我真的无法进一步了解。当我搜索" FRAME_POINTER"这就是我所看到的:

Symbol: ARCH_WANT_FRAME_POINTERS [=n]

Symbol: FRAME_POINTER [=n]
 Prompt: Compile the kernel with frame pointers
   Defined at lib/Kconfig.debug:620
   Depends on: DEBUG_KERNEL && (CRIS || M68K || M68KNOMMU || FRV || UML || AVR32 || SUPERH || BLACKFIN || MN10300) || ARCH_WANT_FRAME_POINTERS
   Location:
     -> Kernel hacking
   Selected by: LOCKDEP && DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT && !MIPS && !PPC && !ARM_UNWIND && !S390 || FAULT_INJECTION_STACKTRACE_FILTER && FAULT_INJECTION_

请注意"选择者:"即使我将make menuconfig窗口拉伸到整个屏幕的宽度,我的行也比我看到的更长,而且我无法找到滚动文本以查看全部内容的选项。非常令人沮丧,因为大多数这种折磨都是如此。顺便说一下,非常感谢任何人认为适合downvote而不留下有用的评论。

所以我尝试使用"搜索"导航到此选项上面的信息,但它仍然无处可寻!

当我转到Kernel hacking --->菜单时,没有选择启用堆栈帧。也没有菜单选择"编译时检查和编译选项"正如@ ShantanuAde的回答所示。我看到了这些选择:

------- Kernel hacking -------------------------
[ ] Show timing information on printks
[ ] Enable __deprecated logic
[ ] Enable __must_check logic
(1024) Warn for stack frames larger than (needs gcc 4.4)
[ ] Magic SysRq key
[ ] Enable unused/obsolete exported symbols
[ ] Debug Filesystem
[ ] Run 'make headers_check' when building vmlinux
[ ] Kernel debugging
[ ] Debug memory initialisation
[ ] Check for stalled CPUs delaying RCU grace periods
[ ] Sysctl checks
[ ] Sample kernel code  --->
[ ] Full Symbolic/Source Debugging support
[ ] Use fast second timer for profiling
[ ] Compiled-in Kernel Boot Parameter
[ ] Suppress Kernel BUG Messages

我能想到的唯一可能让我更接近CONFIG_FRAME_POINTER的是"内核调试"但是当我打开它时,我得到的唯一额外选项是:

[*] Kernel debugging
[ ]   Debug shared IRQ handlers (NEW)
[*]   Detect Soft Lockups (NEW)
[ ]     Panic (Reboot) On Soft Lockups (NEW)
[*]   Detect Hung Tasks (NEW)
[ ]     Panic (Reboot) On Hung Tasks (NEW)
[*]   Collect scheduler debugging info (NEW)
[ ]   Collect scheduler statistics (NEW)
[ ]   Collect kernel timers statistics (NEW)
[ ]   Debug object operations (NEW)
[ ]   Debug slab memory allocations (NEW)
[ ] Spinlock and rw-lock debugging: basic checks (NEW)
[ ] Mutex debugging: basic checks (NEW)
[ ] Spinlock debugging: sleep-inside-spinlock checking (NEW)
[ ] Locking API boot-time self-tests (NEW)
[ ] kobject debugging (NEW)
[ ] Verbose BUG() reporting (adds 70K) (NEW)
[ ] Compile the kernel with debug info (NEW)
[ ] Debug VM (NEW)
[ ] Debug the global anon/private NOMMU mapping region tree (NEW)
[ ] Debug filesystem writers count (NEW)

非常非常令人沮丧。在没有留下任何有用信息的情况下,在没有任何帮助信息的情况下,它不会有任何帮助。

3 个答案:

答案 0 :(得分:9)

make menuconfig工具键/中打开搜索对话框。输入所需的选项,将显示有关此选项的信息。此信息包括选项树中的“路径”。

注意,只有当满足Depends on表达式时,选项才会出现在选项树中;您可以使用其他/次搜索来检查这些选项。

树中从不显示某些选项(对于此类选项“位置”部分不存在),因此用户无法选择它们。通常,这些选项由编译内核的体系结构定义。

答案 1 :(得分:1)

如上所述;搜索" FRAME_POINTER"按下' /'后按make menuconfig键。 它将显示具有此字符串的所有配置选项。按所需选项上的数字。它将带您进入该特定配置。 使用"空格"更改配置键。退出前不要忘记保存。

在我的系统上,我首先列出了下面的输出

  

符号:FRAME_POINTER [= y]
  输入:boolean
  提示:用帧指针编译内核
  地点:
   - >内核黑客攻击(1) - >编译时检查和编译器选项

答案 2 :(得分:0)

数字是索引 搜索结果。你快速跳到结果