C++杂记/读书 2011/12/19

gdb: Warning Unable to find libthread_db matching inferior‘s thread library 最近遇到这个警告,这个警告的意思是说,调试的程序是多线程的程序,而且找到了libthread_db 和libc的目标文件,共享库,但是找不到符号:pthread_create。从下面的链接,可以看到以后libthread_db 的函数可能要合到libc里去,所以要添加对libc的兼容。就是对应的so文件中没找到符号,需要debuginfo相关的rpm安装。那为什么没找到相关的符号呢? 阅读详情


## 《Linux C编程》华清远见


1. 文件操作

* sync(), fsync()

sync()只是将所有修改过的block的buffer排入write queue,并不实际执行I/O操作;             // Q:who/when执行?

系统进程update会每隔一定时间间隔(30秒)调用一次sync(),以确保buffer定期refresh。


## Linux C/C++杂记

1. core dump


#ulimit -c unlimited


[root@frank core-dump]# cat coredump.c
#include <stdio.h>

void fatal_error() {
        int i;
        for(i=0;i<10;i++) {
                printf("i=%d\n", i);
        }
        printf(1/0);
}

int main() {
        fatal_error();
}

[root@frank core-dump]# gcc -g coredump.c
coredump.c: 在函数 ‘fatal_error’ 中:
coredump.c:8: 警告:被零除
coredump.c:8: 警告:传递参数 1 (属于 ‘printf’)时将整数赋给指针,未作类型转换
[root@frank core-dump]#

[root@frank core-dump]# gdb a.out core.1412
GNU gdb Red Hat Linux (6.5-25.el5rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/i686/nosegneg/libthread_db.so.1".


warning: Can't read pathname for load map: 输入/输出错误.
Reading symbols from /lib/i686/nosegneg/libc.so.6...done.
Loaded symbols for /lib/i686/nosegneg/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Core was generated by `./a.out'.
Program terminated with signal 8, Arithmetic exception.
#0  0x080483c1 in fatal_error () at coredump.c:8
8               printf(1/0);
(gdb) where
#0  0x080483c1 in fatal_error () at coredump.c:8
#1  0x080483e3 in main () at coredump.c:12
(gdb) list
3       void fatal_error() {
4               int i;
5               for(i=0;i<10;i++) {
6                       printf("i=%d\n", i);
7               }
8               printf(1/0);
9       }
10
11      int main() {
12              fatal_error();
(gdb) print i
$1 = 10
(gdb)


2. mysql安装


参考URL:http://wanglq.blog.51cto.com/783560/192205


* 下载源代码,解压

* 用户与组

  groupadd mysql
  adduser -g mysql mysql  ???

* 配置compile选项

./configure --prefix=/usr/local/mysql

* build

# make


* install

# make install


* 拷贝config文件到/etc                                            Q:此步遗忘

cp  support-files/my-medium.cnf /etc/my.cnf


* 初始化DB

#cd /usr/local/mysql


[root@frank mysql]# bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/opt/mydata
Installing all prepared tables
Fill help tables

To start mysqld at boot time you have to copy support-files/mysql.server          Q:what's this ?
to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h frank.zou password 'new-password'
See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &

You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:
cd sql-bench ; perl run-all-tests

Please report any problems with the /usr/local/mysql/bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com


* 文件权限

[root@frank mysql]# chown -R mysql .
[root@frank mysql]# chgrp -R mysql .              Q:for what ?


[root@frank mysql-5.0.22]# pwd
/root/software-repository/mysql-5.0.22

[root@frank mysql-5.0.22]# cp  support-files/my-medium.cnf /etc/my.cnf
cp:是否覆盖“/etc/my.cnf”? n                                 // 发现已经有了,估计是安装rpm包的时候放进去的,不知道内容是否完全一样。
[root@frank mysql-5.0.22]#



* start mysql server

[root@frank mysql]#  /usr/local/mysql/bin/mysqld_safe --user=mysql --datadir=/opt/mydata &
[1] 1512
[root@frank mysql]# Starting mysqld daemon with databases from /opt/mydata


[root@frank ~]# ps -ef | grep mysql
root      1512  1094  0 23:45 pts/3    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql --datadir=/opt/mydata
mysql     1543  1512  0 23:45 pts/3    00:00:01 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/opt/mydata --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking --socket=/var/lib/mysql/mysql.sock

root      1595  1557  0 23:48 pts/4    00:00:00 grep mysql


* 连接并使用

#mysql


[root@frank ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 5.0.22

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| func                      |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| proc                      |
| procs_priv                |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
17 rows in set (0.01 sec)


OK!  ( time used, around 45 mins )



* 其它东东

10.设置环境变量
  export PATH=$PATH:/usr/local/mysql/bin
12.启动脚本
  在系统启动时自动启动MySQL数据库服务
  在/etc/rc.local文件内添加下面的行
  /usr/local/mysql/bin/mysqld_saft --user=mysql --datadir=/opt/mydata &
13.MySQL的启动和停止
  如果不用第12步的方法,还可以用下面的方法
  cp support-files/mysql.server /etc/init.d
  cd/etc/init.d ; chmod a+x mysql.server
  修改mysql.server  vim mysql.server
  basedir=/usr/local/mysql
  datadir=/opt/mydata  修改这两行即可
  chkconfig --add mysql.server  把mysql.server添加到chkconfig中
  现在就可以用service mysql.server来启动服务
  也可以用chkconfig来定制开机是否自动启动mysql服务了。。。。


export PATH=$PATH:/usr/local/mysql/bin


##  重读老blog ##

* 关于share lib的老blog

读书时间 2011-05-23 Linux/C/++


* 孤儿进程

读书时间 05/25/2011 Linux C/C++ 孤儿进程


* 关于进程、kill等等深度知识的blog

读书时间 05/28/2011 Linux编程技术详解



别再乱点U盘里的.exe了!手把手教你彻底清除那个伪装成Usb Disk的蠕虫病毒 本文详细介绍了如何识别、清除和预防伪装成Usb Disk的蠕虫病毒。从识别感染迹象到安全备份文件,再到深度清理病毒残留和构建防护策略,提供了一套完整的U盘病毒解决方案。特别提醒用户注意U盘病毒的风险,并养成良好的使用习惯。 阅读详情

相关推荐

告别谷歌翻译失效!手把手教你用Immersive Translate插件实现双语网页阅读(附Chrome/Edge/Firefox保姆级配置)

本文详细介绍了如何使用Immersive Translate插件实现双语网页阅读,解决谷歌翻译失效的问题。通过Chrome、Edge和Firefox的保姆级配置指南,帮助用户轻松安装和使用这款支持双语对照、智能识别网页内容的翻译插件,提升外文资料阅读效率。

weixin_28683689的博客 485

Unable to find libthread_db matching inferior‘s thread library, thread debugging will not be availab

Unable to find libthread_db matching inferior's thread library, thread debugging will not be available Make breakpoint pending on future shared library load? (y or [n])

qq_42217691的博客 5640

docker 安装oracle

本文介绍了使用Docker部署Oracle数据库的实践指南。主要内容包括:常用Oracle镜像的阿里云和华为云拉取地址,11g/12c/19c等不同版本的启动命令示例,以及连接数据库的基本信息。实战部分详细演示了Oracle 11g的安装过程,包括镜像拉取、容器启动、密码修改和数据库连接步骤,并通过Sql Developer和命令行两种方式创建用户。最后提到数据持久化的重要性,建议将数据库文件挂载到宿主机目录以防止容器删除导致数据丢失。文章提供了完整的操作命令和截图说明,适合需要快速部署Oracle测试环境

weixin_39766667的博客 372

GDB调试多个文件组成的程序时报错

GDB调试多个文件组成的程序时报错无法调取调试信息。

qq_43813969的博客 3802

IC芯片验证 - 手把手教你搭建UVM验证环境

这是一个UVM的demo项目

howard789的博客 3万+

面向网络攻击行为可视化分析系统实现【WebSocket + 可视化】

本系统主要应用于网站运维管理,它解决了网站运维人员排查网络攻击行为复杂且繁琐等问题,提高了运维人员网络安全分析的效率和准确性。

oNew_Lifeo的博客 1620

linux gdb调试线程,多线程 – 无法使用gdb调试多线程应用程序

我正在使用gdb调试多线程应用程序,但是当我在gdb中启动程序时,我会收到警告:warning: Unable to find libthread_db matching inferior’s thread library, thread debugging will not be available.我仍然可以调试,但除了主线程外,我无法调试任何东西.我已经阅读了建议安装软件包libthread...

weixin_39935571的博客 2702

从XSA到Linux应用:Petalinux与Vitis的嵌入式开发全流程解析

本文详细解析了从XSA文件到Linux应用的嵌入式开发全流程,重点介绍了Petalinux与Vitis工具链的使用技巧和实战经验。通过XSA硬件描述、Petalinux工程搭建、系统镜像优化及Vitis开发配置等关键步骤,帮助开发者高效完成ZYNQ平台开发,解决常见问题并提升开发效率。

weixin_29195217的博客 192

读书时间 2011/06/19 - 1 Objective-C ( lots of questions here 2011/12/21 )

《Objective-C基础教程》   0. 杂问杂记   Q:与C语言特性的关系,可直接使用所有C特性吗?     A:Objective-C只是”增强"了C,所有保留了所有C的属性。 YES !   Q:向nil(空)对象发送消息,不会出现异常,表示停止操作命令???     A: I guess 没有问题,这是和Java/C++最大不同之一。 2011/12/21

printf1998的专栏 447

高级数据库--作业及答案

中科大金培权老师的高级数据库课程作业及答案

一杯水果茶!足矣~ 1656

分数间隔均衡器的基本原理及应用(使用Matlab)

通过对接收信号进行加权求和,分数间隔均衡器可以抵消信号在传输过程中受到的频率响应失真。Matlab提供了丰富的工具和函数,可以方便地实现分数间隔均衡器,并进行性能评估。分数间隔均衡器(Fractional Interval Equalizer)是一种数字信号处理技术,用于均衡带通信道中的信号失真。分数间隔均衡器的基本原理是通过对接收信号进行加权求和,以抵消信号在传输过程中受到的频率响应失真。分数间隔均衡器在通信系统中具有广泛的应用。最后,我们通过比较均衡后的信号和发送数据的阈值来进行解调,并计算误码率。

2301_79325657的博客 676

读书时间 2011/06/17 - 2 Objective-C

《Objective-C基础教程》   0. 杂记杂问   Q: 对象通讯总使用指针,所以,有没有这样的变量申明 Car car ???? Q: Objective-C++什么含义? Q: -的含义? -(void) draw;  // "-"表示此为方法申明,这是一种区分函数原型与方法申明的方式,后者者"-"                      Q: "-"似乎表示inst

printf1998的专栏 369

Arduino IDE 开发ESP32-S3编译报错 Sketch too big?一步步解决!

解决方法很简单,只需要一步步来修改 Arduino IDE 的配置即可。确保你已经打开 Arduino IDE 并加载了你的 ESP32 代码。如果你也遇到了这个问题,按这个方法试试,应该就能顺利搞定!,如果你需要 OTA,就不能选这个方案,需要换成。,但我回头一想,我这块 ESP32-S3 可是。,按理说存储空间应该足够啊,那这到底是咋回事?,默认方案就装不下了,这时就需要选择更大的。按钮,这次应该不会报错了!,然后在下拉菜单中找到。,可以支持更大的固件。如果你的固件体积超过。,就能正常编译上传。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2135

优快云博文精选:iPhone系列开发博客资源汇总

优快云博客本期热文推荐,为您介绍有关iPhone应用开发的5个博客,分享他们的日积月累的宝贵经验,希望这些文章对iPhone开发者们能有所启发和帮助。 [1] 李华明:Objective-C语言随笔、iOS Cocos2d游戏开发 从这一章开始,Himi将一步一步的带大家走进Iphone4的开发,当然开发语言则不再是Java,而是Objective-C。 Mac os 下搭建iOS...

weixin_30399797的博客 132

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Linux多线程调用ubus导致死锁问题【转】

(转自:https://blog.youkuaiyun.com/TSZ0000/article/details/100575772) 测试组发现用户进程在某种特定情况下,会出现死锁,现象是进程还在S状态,但没有任何反应,所以怀疑死锁。 问题复现 通过几次测试发现,进程中设置的参数恢复出厂后重启进程很大概率会出现死锁,这时候已经把复现的方法明确,但是从复现的场景来看暂时无法定位出原因。接下来就编译问题版...

Uaena的博客 2323

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

如何解coredump

CoreDump 1 cd coredump path: 20181024_053514_mscd_IPOS_ssc.19341.1540352114.vsfo-3.core $ gdb [build_version_binary] [coredump.core] eselnts1473> gdb /lab/epg_scm_builds/MBMS_build...

usstmiracle的博客 1044

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

银河麒麟高级服务器操作系统V10SP2(X86)mysql数据库使用gdb内存回收报错问题处理

银河麒麟高级服务器操作系统V10SP2(X86)mysql数据库使用gdb内存回收报错问题处理

weixin_45754407的博客 1172

gdb使用遇到的一个问题

gdb

dongyoubin的博客 1900

生成堆栈信息linux开源库,linux - 从glibc源代码生成libc6-dbg软件包 - 堆栈内存溢出...

我有一个定制的ARM板。 它使用buildroot生成所有映像。 我们正在使用glibc ..我需要在C库调用中进行调试。 当我使用“ Set Verbose On”在gdb下运行代码时,它会从libc6.so中读取符号,但是当我在C库调用中保留断点(例如fork)并运行info locals / args时,它将说“没有符号信息表”。我需要重建GLibc还是其他任何设置。Reading s...

weixin_42188512的博客 658

breakpad查看linux

1、什么是breakpad? 写代码的人最难堪而又无法回避的事情之一,莫过于你写的程序某刻当着 QA 的面突然挂掉 --- 大大没面子!但更没面子的是,之后你一直没法解决问题。。。程序崩溃而又无法解决可能有很多的原因,其中一个就是无法找到出问题的地方,尤其是那些 release 版本的程序。异常崩溃后的善后处理是一件很重要而又不大好做的事情,一方面事关用户体验,另一方面能否尽可能收集崩溃现场的信息关系着接下来能否快速和及时有效地解决问题。 google breakpad 可以说算是专门为解决这类事情而开

juluwangriyue的博客 864

GDB断点失效(2)

上一篇说过,GDB使用的时候表现很奇怪, 线程都看不到,只能看到主线程,打其他线程的断点,都失效。 刚刚把源码也放到目录下,断点是打到了,但是同时程序也退出了。 提示信息如下: Program terminated with signal SIGTRAP, Trace/breakpoint trap. 百度之后,发现GDB WIKI里有一个问题描述很类似。 http://sourcew

waterhawk的专栏 1万+

GDB调试多线程及多进程

转自:https://ivanzz1001.github.io/records/post/cplusplus/2018/08/19/cpluscplus-gdbusage_part2#3-%E8%AE%BE%E7%BD%AE%E7%94%A8%E4%BA%8E%E8%BF%94%E5%9B%9E%E7%9A%84%E4%B9%A6%E7%AD%BE 文章目录 1. 调试多线程 1.1...

勤学如春起之苗,不见其增,日有所长! 辍学如磨刀之石,不见其损,日有所亏! 1983

.so是什么文件_Node 案发现场揭秘 —— 文件句柄泄露导致进程假死

拉雯妲镇楼,开源的 Node.js 性能监控与线上故障定位工具,欢迎大家关注:hyj1991:Easy-Monitor 3.0 开源 - 基于 Egg 的 Node.js 性能监控解决方案​zhuanlan.zhihu.com好久没写 Node.js 故障案例了,今天是一枚全新的进程假死无响应案例。特点是完全不同于之前常规遇到的类死循环引发的阻塞假死,值得记录分析的过程,希望对遇到其它的类似案例的...

weixin_39631094的博客 294

GDB使用手册(五)、在GDB下运行程序

 在GDB下运行程序时,必须先在编译时生成调试信息。  可以在选择的环境中带参数(如果有)启动GDB 。如果我们在做本地调试,我们可以重定向程序的输入和输出,调试一个已经运行的进程,或者杀死一个子进程。 编译:编译调试  为了有效地调试程序,需要在编译时生成调试信息。此调试信息存储在目标文件中;它描述了每个变量或函数的数据类型以及可执行代码中源代码行号和地址之间的对应关系。  要请求调试信息,请在运行编译器时指定“-g”选项。  对要交付给客户的程序使用“-o”编译器选项进行优化编译。但是,一些编译器无法同

学无止尽,谨言慎行! 5044

基于linux多线程调试分析的ecos多任务调试设计

本文分析linux的多线程调试的实现机制和代码框架,给出基于jtag调试方式的ecos多任务调试的代码框架和实现机制的设计。

JS072110的专栏 2093

Linux多线程调用ubus导致死锁问题

测试组发现用户进程在某种特定情况下,会出现死锁,现象是进程还在S状态,但没有任何反应,所以怀疑死锁。 问题复现 通过几次测试发现,进程中设置的参数恢复出厂后重启进程很大概率会出现死锁,这时候已经把复现的方法明确,但是从复现的场景来看暂时无法定位出原因。接下来就编译问题版本进行问题跟踪。 调试方法 追查进程死锁方法我知道的有这么几种:另开线程心跳监控、另开进程心跳监控,打印调试,gdb调试,...

TSZ0000的博客 4856
上一篇: UC故事 2011/12/19 build linix servers
下一篇: UC故事2011/12/20 重温旧梦
printf1998
博客等级 码龄16年 14粉丝 196原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值