我是靠谱客的博主 还单身歌曲,最近开发中收集的这篇文章主要介绍在调试模式且使用gnome-terminal命令的情况下生成core文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在debug模式且使用gnome-terminal命令的情况下生成core文件


一、在debug模式且使用gnome-terminal命令的情况下生成core文件的前提条件
( 1 ) 进程是设置-用户-ID,而且当前用户并非程序文件的所有者;
( 2 ) 进程是设置-组-ID,而且当前用户并非该程序文件的组所有者;
( 3 ) 用户没有写当前工作目录的许可权;(切记)
( 4 ) 文件太大;core文件的许可权(假定该文件在此之前并不存在)通常是用户读/写,组读和其他读;
二、在debug模式且使用gnome-terminal命令的情况下生成core文件的注意事项
( 1 )编译参数中不能包含-fsanitize=address这一参数。
( 2 )如果没有永久设定core大小情况下,每个终端的core生成大小为默认值即0。
三、错误示例
使用一个程序运行./b.elf程序
编译参数

	set(CMAKE_CXX_FLAGS "-fsanitize=address -pipe -g -std=gnu++11 -Wall -D_REENTRANT -fPIC -DNDEBUG -fsigned-char")
set(CMAKE_C_FLAGS "-fsanitize=address -pipe -g -Wall -D_REENTRANT -fPIC -DNDEBUG -fsigned-char")
set(CMAKE_EXE_LINKER_FLAGS "-fsanitize=address -static-libasan")
gnome-terminal命令的代码片段

system(" gnome-terminal -x
./b.elf ");
错误原因:
1.编译参数设置为-fsanitize=address会使用AddressSanitizer工具。使用此工具后不能生成core文件。
2.如果系统core文件默认值为0且没有设置core文件的生成大小,会导致core文件无法生成。

四、正确示例

	使用一个程序运行./b.elf程序

set(CMAKE_CXX_FLAGS " -pipe -g -std=gnu++11 -Wall -D_REENTRANT -fPIC -DNDEBUG -fsigned-char")
set(CMAKE_C_FLAGS " -pipe -g -Wall -D_REENTRANT -fPIC -DNDEBUG -fsigned-char")
set(CMAKE_EXE_LINKER_FLAGS "-g ")
gnome-terminal命令的代码片段

system("gnome-terminal -x bash -c "ulimit -c unlimited && ./b.elf
" ");
正确示例与错误示例的差别:
1.正确示例中在编译参数中没有-fsanitize=address这一参数
2.正确示例中在使用gonme-terminal打开终端后,使用shell命令设置此终端下生成的core文件大小并运行./b.elf程序。

最后

以上就是还单身歌曲为你收集整理的在调试模式且使用gnome-terminal命令的情况下生成core文件的全部内容,希望文章能够帮你解决在调试模式且使用gnome-terminal命令的情况下生成core文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部