linux
zhjzhjxzhl
这个作者很懒,什么都没留下…
展开
-
linux 命令行记录
awk '{match($0,/level=([0-9]+)/,a);print a[1]}' game1logIn20160323.log | sort -nr | uniq -c 比较常用的几个grep(已经熟练)awk(练习中)sort,uniq,cut 这几个比较简单。 sed(只用过少数几次) awk '{match($0,/act=(.*),uid=.*...原创 2019-02-15 14:34:26 · 500 阅读 · 0 评论 -
dlopen dlsym dlclose等linux下的动态库
1、dlsym查找的时候一定要注意函数名,需要在编译so的时候,使用extern "C"{},不然编译出来的名字是c++的,容易查不到2、如果想要覆盖系统函数,比如像覆盖socket,read,write等,可以使用自己定义这些函数,然后在函数里,调用真正的系统函数,为了防止编译错误,只能动态调用。dlsym(RTLD_NEXT,"socket"),这个RTLD_NEXT就是专门为覆盖动态库而...原创 2019-02-15 14:35:25 · 236 阅读 · 0 评论 -
关于c++协程的实现
可以通过切换寄存器的方式来实现协程,这里需要自己定义挂起和唤醒,自定义栈,通过设置bp寄存器自定义,而寄存器切换,则可以用汇编代码,每次切换的时候,将寄存器存放在栈的固定位置,等恢复的时候再恢复栈参考项目:https://github.com/Tencent/libco/blob/master/...原创 2018-03-29 16:13:53 · 696 阅读 · 0 评论 -
CMakeLists.txt 的编写
project(test)//定义项目名set(CMAKE_BUILD_TYPE Debug)//设置为debug,如果需要gdb调试,需要设置这个set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -g -Wall...) add_library(test_static STATIC test.cpp)//添加静态库的构建 add_executable(...原创 2019-02-15 14:35:04 · 147 阅读 · 0 评论 -
GDB调试相关命令
gdb executeFilestart args... 开始单步执行run args 直接运行break(b) 加短点 b file.cpp:lineNumi registers //显示寄存器信息i lo 显示局部变量bt backtrace 显示调用栈frame 显示当前帧next n 下一步,不进入step s 单步进入info breakpoints (i b...原创 2018-03-29 16:13:46 · 189 阅读 · 0 评论 -
gcc内嵌汇编
1,gnu内联汇编的语法:asm或__asm__("汇编代码");指令必须包含在引号里如果包含的指令超过一行 必须使用新行分隔符分隔 使用c全局变量, 不能在内联汇编中使用局部变量, 注意在汇编语言代码中值被用做内存位置, 而不是立即数值如果不希望优化内联汇编, 则可以volatile修饰符如:__asm__ volatile("code");2,GCC内联汇编的扩展语法__a...转载 2019-02-15 14:34:52 · 337 阅读 · 0 评论