UNIX下命令行调试工具GDB使用教程

它是一种强大的命令行调试工具。
一般来说,调试器的功能:能够运行程序,设置所有能影响程序运行的参数
【菜科解读】
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。
它是一种强大的命令行调试工具。
一般来说,调试器的功能:
能够运行程序,设置所有能影响程序运行的参数;
能够让程序在指定条件下停止运行;
能够在程序停止时检查所有参数的情况;
能够根据指定条件改变程序的运行。
gdb调试源代码流程:
1)进入GDB #gdb test
只需输入GDB和要调试的可执行文件即可,在GDB的启动画面中指出了GDB的版本号、遵循的许可等信息,接下来就进入了由"(gdb)"开头的命令行界面了;
2)查看文件 (gdb) l
在GDB中键入"l"(list)就可以查看程序的源码了,GDB列出的源代码中明确地给出了对应的行号,方便代码的定位;
3)设置断点 (gdb) b 6
只需在"b"(break)后加入对应的行号即可,在GDB中利用行号设置断点是指代码运行到对应行之前暂停;设置断点可以使程序执行到某个位置时暂停,程序员在该位置处可以方便地查看变量的值、堆栈情况等;
一般情况下,源代码中大家行号与用户书写程序的行号是一致的,但有时由于用户的某些编译选项会导致行号不一致的情况,因此,一定要查看在GDB中的行号;
4)查看断点处情况 (gdb)info b
可以键入"info b"来查看断点处情况,可以设置多个断点;
5)运行代码 (gdb)r
GDB默认从首行开始运行代码,键入"r"(run)即可;程序运行到断点处停止。
6)看变量值 (gdb)p n
在程序暂停之后,程序员可以查看断点处的相关变量值,在GDB中只需键入"p 变量名"(print)即可;
GDB在显示变量值时都会在对应值之前加上"$N"标记,它是当前变量值的引用标记,以后若想再次引用此变量,就可以直接写作"$N",而无需写冗长的变量名;
7)观察变量 (gdb)watch n
在某一循环处,往往希望能够观察一个变量的变化情况,这时就可以键入命令"watch"来观察变量的变化情况,GDB在"n"设置了观察点;
8)单步运行 (gdb)n
单步运行是指一次只运行一条语句,这样可以方便查看程序运行的结果,在此处只需键入"n"(next)即可;随着程序的单步运行,当变量n的值发生变化时,GDB就会自动显示出n的变化情况。
9)程序继续运行 (gdb)c
命令"c"(continue)可以使程序继续往下运行,直到再次遇到断点或程序结束;
10)退出GDB (gdb)q
只需使用指令"q"(quit)即可。
设置/删除断点
命令格式 例子 作用
break + 设置断点的行号 beak n 用于在程序中对应行设置断点
tbreak + 行号或函数名 tbreak n/func 设置临时断点,到达后被自动删除
break + filename + 行号 break main.c:10 用于在指定文件对应行设置断点
break + break 0x3400a 用于在内存某一位置处暂停
break + 行号 + if + 条件 break 10 if i==3 用于设置条件断点,在循环中使用非常方便
info breakpoints/watchpoints [n] info break n表示断点号,查看断点/观察点的情况
clear + 要清除的断点行号 clear 10 用于清除对应行的断点,要给出断点的行号,清除时GDB会给出提示
delete + 要清除的断点编号 delete 3 用于清除断点和自动显示的表达式的命令,要给出断点的编号,清除时GDB不会给出任何提示
disable/enable + 断点编号 disable 3 让所设断点暂时失效/使能,如果要让多个编号处的断点失效/使能,可将编号之间用空格隔开
awatch/watch + 变量 awatch/watch i 设置一个观察点,当变量被读出或写入时程序被暂停
rwatch + 变量 rwatch i 设置一个观察点,当变量被读出时,程序被暂停
catch 设置捕捉点来补捉程序运行时的一些事件。
如:载入共享库(动态链接库)或是C++的异常
tcatch 只设置一次捕捉点,当程序停住以后,应点被自动删除
断点与观察点的区别:
1.所有使用与breakpoint的操作都适用于watchpoint
2.断点是CPU到某一地址取指令时中断,观察点是CPU到某一地址读写数据时中断。
在多线程的程序中,观察点的作用很有限,GDB只能观察一个线程中的表达式的值,如果用户确信表达式只被当前线程所存取,那么使用观察点才有效,GDB无法检测一个非当前线程对表达式值的改变。
数据相关命令
display +表达式 display a 用于显示表达式的值,每当程序运行到断点处都会显示表达式的值
info display 用于显示当前所有要显示值的表达式的情况
delete + display 编号 delete 3 用于删除一个要显示值的表达式,被删除的表达式将不被显示
disable/enable + display 编号 disable/enable 3 使一个要显示值的表达式暂时失效/使能
undisplay + display 编号 undisplay 3 用于结束某个表达式值的显示
whatis + 变量 whatis i 显示某个表达式的数据类型
print(p) + 变量/表达式 p n 用于打印变量或表达式的值
set + 变量 = 变量值 set i = 3 改变程序中某个变量的值
在使用print命令时,可以对变量按指定格式进行输出,其命令格式为print /变量名 + 格式
其中常用的变量格式:x:十六进制;d:十进制;u:无符号数;o:八进制;c:字符格式;f:浮点数。
调试运行环境相关命令
set args set args arg1 arg2 设置运行参数
show args show args 参看运行参数
set width + 数目 set width 70 设置GDB的行宽
cd + 工作目录 cd ../ 切换工作目录
run r/run 程序开始执行
step(s) s 进入式(会进入到所调用的子函数中)单步执行,进入函数的前提是,此函数被编译有debug信息
next(n) n 非进入式(不会进入到所调用的子函数中)单步执行
finish finish 一直运行到函数返回并打印函数返回时的堆栈地址和返回值及参数值等信息
until + 行数 u 3 运行到函数某一行
continue(c) c 执行到下一个断点或程序结束
return return 5 改变程序流程,直接结束当前函数,并将指定值返回
call + 函数 call func 在当前位置执行所要运行的函数
堆栈相关命令
backtrace/bt bt 用来打印栈帧指针,也可以在该命令后加上要打印的栈帧指针的个数,查看程序执行到此时,是经过哪些函数呼叫的程序,程序“调用堆栈”是当前函数之前的所有已调用函数的列表(包括当前函数)。
每个函数及其变量都被分配了一个“帧”,最近调用的函数在 0 号帧中(“底部”帧)
frame frame 1 用于打印指定栈帧
info reg info reg 查看寄存器使用情况
info stack info stack 查看堆栈使用情况
up/down up/down 跳到上一层/下一层函数
跳转执行 一般来说,被调试程序会按照程序代码的运行顺序依次执行。
GDB提供了乱序执行的功能,也就是说,GDB可以修改程序的执行顺序,可以让程序执行随意跳跃。
这个功能可以由GDB的jump命令来完: jump
指定下一条语句的运行点。
可以是文件的行号,可以是file:line格式,可以是+num这种偏移量格式。
表式着下一条运行语句从哪里开始。
jump 这里的 是代码行的内存地址。
注意,jump命令不会改变当前的程序栈中的内容,所以,当你从一个函数跳到另一个函数时,当函数运行完返回时进行弹栈操作时必然会发生错误,可能结果还是非常奇怪的,甚至于产生程序Core Dump。
所以最好是同一个函数中进行跳转。
熟悉汇编的人都知道,程序运行时,有一个寄存器用于保存当前代码所在的内存地址。
所以,jump命令也就是改变了这个寄存器中的值。
于是,你可以使用“set $pc”来更改跳转执行的地址。
如: set $pc = 0x485
signal命令
信号是一种软中断,是一种处理异步事件的方法,使用singal命令,可以产生一个信号量给被调试程序,如中断信号"Ctrl+C"。
这非常方便于程序的调试,可以在程序运行的任意位置设置断点,并在该断点用GDB产生一个信号量,这种精确地在某处产生信号的方法非常有利于程序的调试,signal命令语法是:signal ,UNIX的系统信号量通常从1到15,所以取值也在这个范围。
handle 在GDB中定义一个信号处理。
信号可以以SIG开头或不以SIG开头,可以用定义一个要处理信号的范围(如:SIGIO-SIGKILL,表示处理从SIGIO信号到SIGKILL的信号,其中包括SIGIO,SIGIOT,SIGKILL三个信号),也可以使用关键字all来标明要处理所有的信号。
一旦被调试的程序接收到信号,运行程序马上会被GDB停住,以供调试。
其可以是以下几种关键字的一个或多个。
nostop/stop当被调试的程序收到信号时,GDB不会停住程序的运行,但会打出消息告诉你收到这种信号/GDB会停住你的程序 print/noprint当被调试的程序收到信号时,GDB会显示出一条信息/GDB不会告诉你收到信号的信息pass noignore 当被调试的程序收到信号时,GDB不处理信号。
这表示,GDB会把这个信号交给被调试程序会处理。
nopass ignore 当被调试的程序收到信号时,GDB不会让被调试程序来处理这个信号。
info signals info handle 可以查看哪些信号被GDB处理,并且可以看到缺省的处理方式
single命令和shell的kill命令不同,系统的kill命令发信号给被调试程序时,是由GDB截获的,而single命令所发出一信号则是直接发给被调试程序的。
GDB中运行UNIX的shell程序
在gdb环境中,你可以执行UNIX的shell的命令,使用gdb的shell命令来完成: shell 调用UNIX的shell来执行,环境变量SHELL中定义的UNIX的shell将会被执行,如果SHELL没有定义,那就使用UNIX的标准shell:/bin/sh。
(在Windows中使用Command.com或cmd.exe)make 可以在gdb中执行make命令来重新build自己的程序。
这个命令等价于"shell make"
在GDB中运行程序
当以gdb 方式启动gdb后,gdb会在PATH路径和当前目录中搜索的源文件。
如要确认gdb是否读到源文件,可使用l或list命令,看看gdb是否能列出源代码。
在gdb中,运行程序使用r或是run命令。
1、程序运行参数。
set args 可指定运行时参数。
(如:set args 10 20 30 40 50) show args 命令可以查看设置好的运行参数。
2、运行环境。
path 可设定程序的运行路径。
show paths 查看程序的运行路径。
set environment varname [=value] 设置环境变量。
如:set env USER=hchen show environment [varname] 查看环境变量。
3、工作目录。
cd 相当于shell的cd命令。
pwd 显示当前的所在目录。
4、程序的输入输出。
info terminal 显示你程序用到的终端的模式。
使用重定向控制程序输出。
如:run > outfile tty命令可以指写输入输出的终端设备。
如:tty /dev/ttyb
调试已运行的程序
两种方法: 1、在UNIX下用ps查看正在运行的程序的PID(进程ID),然后用gdb PID格式挂接正在运行的程序。
2、先用gdb 关联上源代码,并进行gdb,在gdb中用attach命令来挂接进程的PID。
并用detach来取消挂接的进程。
暂停 / 恢复程序运行
当进程被gdb停住时,你可以使用info program 来查看程序的是否在运行,进程号,被暂停的原因。
在gdb中,我们可以有以下几种暂停方式:断点(BreakPoint)、观察点(WatchPoint)、捕捉点(CatchPoint)、信号(Signals)、线程停止(Thread Stops),如果要恢复程序运行,可以使用c或是continue命令。
线程(Thread Stops)
如果程序是多线程,可以定义断点是否在所有的线程上,或是在某个特定的线程。
break threadbreak thread if ... linespec指定了断点设置在的源程序的行号。
threadno指定了线程的ID,注意,这个ID是GDB分配的,可以通过“info threads”命令来查看正在运行程序中的线程信息。
如果不指定thread 则表示断点设在所有线程上面。
还可以为某线程指定断点条件。
如: (gdb) break frik.c:13 thread 28 if bartab > lim 当你的程序被GDB停住时,所有的运行线程都会被停住。
这方便查看运行程序的总体情况。
而在你恢复程序运行时,所有的线程也会被恢复运行。
调试core文件
Linux环境下经常遇到某个进程挂掉而找不到原因,应用程序崩溃,可以通过生成core file文件加上gdb来定位
Core Dump:Core的意思是内存,Dump的意思是扔出来,堆出来。
开发和使用Unix程序时,有时程序莫名其妙的down了,却没有任何的提示(有时候会提示core dumped),这时候可以查看一下有没有形如core.进程号的文件生成,这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以做为调试程序的参考
生成Core文件
一般默认情况下,core file的大小被设置为了0,这样系统就不dump出core file了。
#设置core大小为无限ulimit -c unlimited#设置文件大小为无限ulimit unlimited这些需要有root权限, 在ubuntu下每次重新打开中断都需要重新输入上面的第一条命令, 来设置core大小为无限
core文件生成路径:输入可执行文件运行命令的同一路径下。
若系统生成的core文件不带其他任何扩展名称,则全部命名为core。
新的core文件生成将覆盖原来的core文件。
1)/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展。
文件内容为1,表示添加pid作为扩展名,生成的core文件格式为core.xxxx;为0则表示生成的core文件同一命名为core。
可通过以下命令修改此文件:echo "1" > /proc/sys/kernel/core_uses_pid
2)proc/sys/kernel/core_pattern可以控制core文件保存位置和文件名格式。
可通过以下命令修改此文件:echo "/corefile/core-%e-%p-%t" > core_pattern,可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳以下是参数列表: %p - insert pid into filename 添加pid %u - insert current uid into filename 添加当前uid %g - insert current gid into filename 添加当前gid %s - insert signal that caused the coredump into the filename 添加导致产生core的信号 %t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间 %h - insert hostname where the coredump happened into filename 添加主机名 %e - insert coredumping executable name into filename 添加命令名
用gdb查看core文件
下面我们可以在发生运行时信号引起的错误时发生core dump了.发生core dump之后, 用gdb进行查看core文件的内容, 以定位文件中引发core dump的行.gdb [exec file] [core file]如:gdb ./test core
或gdb ./a.outcore-file core.xxxxgdb后, 用bt命令backtrace或where查看程序运行到哪里, 来定位core dump的文件->行.
待调试的可执行文件,在编译的时候需要加-g,core文件才能正常显示出错信息
1)gdb -core=core.xxxxfile ./a.outbt2)gdb -c core.xxxxfile ./a.outbt
用gdb实时观察某进程crash信息
启动进程gdb -p PIDc运行进程至crashgdb会显示crash信息bt
UNIX,下,命令行,调试,工具,GDB,使用,教程,GDB如何做才能让自己瘦下来?哪种减肥方法更适合自己?
冬天很容易发胖。
然而,从的角度来看,夏季、冬季和异常减肥都是不健康的。
然而,面对炎热的夏天,喜欢穿短袖短裤的人MM如何健康实施减肥计划?这么多减肥方法该怎么办?夏天减肥最健康最有效的方法是什么?1、苹果、、脱脂减肥法苹果:吃苹果减肥的人也可以改善皮肤干燥、、便秘等症状。
柚:葡萄柚饮食是30年前在西方国家受到女性高度评价的饮食。
美国的一项新研究发现,这种饮食确实有其独特的减肥效果。
牛奶:喝牛奶的日子很重要,不能喝水。
循环几次,体重一定会下降。
而且,体内的脂肪会被切实地减少。
建议大家可以把这种方法放到周末去执行,作为减肥的好方法。
食程:这种方法不宜过长。
每天不限量吃脱脂牛奶,加上苹果和柚子,但是没有脂肪的饮食对皮肤不好。
2.替代方法:用低脂食品代替高脂食品减肥是一种自我欺骗。
在满足腹部欲望的需要下,高脂肪食物可以用类似的微量脂肪食物代替。
当然,这种替代过程减少了肥胖的危机。
芝麻酱、花生酱、沙拉酱、沙茶酱是热量最高的四种酱,此时可以用微量脂肪酱(番茄酱或酱油)调味,减少肥胖。
三、仙人掌减肥法仙人掌粘液性寒,能促进血液循环,消除流氓。
苹果酸促进胃肠蠕动。
三部分促进多余脂肪的快速分解,有效防止肠道脂肪吸收,抑制肝脏脂肪的合成。
吃法:1/2巴掌大小的仙人掌,2个蛋白质,拔出仙人掌上的刺,用刀切掉外青皮,切碎放入打好的蛋白质中混合,将约30毫升的蜂蜜放入锅中,适当加热黄泡,搅拌炒熟,每周服用3次以上减肥。
桃花减肥茶桃花的美容减肥功能在古代经典中有很多记载。
《神农本草经》称桃花为好色,女儿称桃花为细腰。
春天可以摘桃花或者摘桃花阴干,每次用几瓣泡茶。
数量不能增加。
服用后大便腹泻者应注意暂停服用。
5、芝麻+海带瘦身法把它们一起煮,可以起到美容、美容、抗衰老的作用。
因为芝麻可以改善血液循环,促进新陈代谢,亚油酸可以调节胆固醇,维生素E可以防止衰老。
海带含有钙和碘,可以净化血液。
促进甲状腺素合成,效果翻倍。
6.苹果饮食减肥法早餐:一瓶牛奶(或不加糖咖啡)+煮蛋(或茶蛋)苹果:从中午12:00开始,每2小时吃一个苹果,直到晚上8:00共吃5个苹果,吃完吃了。
7.中药饮帖减肥法决明子2、炒山楂3、炒陈皮2、甘草2。
用六碗水煮沸,然后用小火煮三分钟,立即倒出,以免汁液被渣吸收。
每天吃一个帖子,如果有腹泻,第二天可以吃。
服用此剂时,必须少吃甜食、油炸食品和淀粉。
此外,睡觉前4小时禁食,减肥到理想体重子和大麦茶,不胖。
8.冬瓜虾减肥法吃法:少量多餐。
饿了就吃几口,尽量等汤凉了再喝。
坚持吃虾炖冬瓜,一个月可以瘦15-20斤左右。
请注意不要吃虾头。
因为胆固醇还是很高的我是水像星座,用冬瓜排出多余的分数。
虾含有高蛋白和低脂肪,富含钙~缺钙会导致肥胖! 减肥只吃蜂巢蜜有效吗? 回答:节食只吃蜂巢蜜是没效果的。
节食是个综合评价的过程,必须有毅力,最科学有效的节食办法就是通过严格的压制饮食,最好是分餐制,每天三餐每餐主食不要低于150克,不要吃高热量的食物,也不能够喝饮料。
其次,长期健身运动,每天活动至少一小时以上,这样能起些节食的效果。
需求注意调整饮食习惯,要注意尽可能的多吃一些蔬菜水果。
好的减肥产品有哪些? 回答:节食一定不能够借助某种节食产品来实施节食的亲。
节食产品的副作用是非常大的,它可能会引发头晕,头痛,恶心呕吐,腹痛,月经不规律和心血管方面的疾病等。
长期喝药的话,身体也忍受没法,一旦停药还会迅速反冲,所以真正节食的人是不能够借助减肥药来实施节食的。
午餐减肥食谱有吗? 回答:节食在压制热量摄取的同时,必须留意饮食多样化,千万千万不能够太过单一,中午的话可以足量的吃一点点肉类食物,但是千万千万不能够过多热量摄取,确保在840卡路里就可以了,以素食为基础。
如果吃得太少的话,你下午还要工作和练习,身体也是会遭到很大的干扰的。
减肥能不能吃土豆片 回答:节食的时候当然是可以吃土豆片的,各种的食物都可以吃许多节食不是不吃食物,而是要办到食物的营养全面均衡,荤素配搭好要少吃多餐,要细嚼慢咽,还是要惯有规律的生活饮食方式,这样才能超越节食的效果,同时也要忍耐实施体育锻炼,不要中断,只有活动和饮食相结合才能有效果。
蜂蜜拌黄瓜可以减肥吗 回答:蜂蜜拌黄瓜是可以减肥的。
黄瓜当中的热量和糖分非常少,而且含有丰富的维生素和膳食纤维,可以润肠通便。
黄瓜中的黄瓜酶还可以促进新陈代谢,辅助减肥。
蜂蜜当中虽然含糖量比较高,但是其中富含的脂肪酸,可以促进肠道蠕动。
矿物质以及维生素,可以加速身体内毒素的排出、润肠通便,从而达到减肥的效果。
所以吃蜂蜜拌黄瓜,对减肥是有一定的辅助作用的。
晚上不吃饭真能减肥吗 回答:晚上不吃饭减肥并非长久之计,可能导致营养不良和副作用。
更为有效的减肥方式是通过医疗手段,如抽脂和吸脂手术。
这种方法对局部进行麻醉后,通过插入吸水管将多余脂肪抽出体外,可作用于身体各部位,同时需要控制饮食。
这种方法较为先进且效果良好。
建议在减肥过程中应结合合理饮食与适度运动,避免单纯依赖不吃饭等方式,保障身体健康。
一天跑多少公里能达到减肥的效果 回答:每天跑步约3公里有助于减肥,长期坚持可提高身体代谢,加速脂肪消耗。
肥胖可能由不良饮食习惯造成,体内脂肪堆积影响体型美观。
除跑步外,还可采用埋线减肥法或吸脂手术快速减肥。
埋线减肥法通过皮下植入蛋白线刺激穴位提高代谢,促使脂肪组织液化,约1-2个月见效。
减肥期间应注意饮食,避免高糖油炸食物,多吃水果蔬菜。
白萝卜减肥一周瘦10斤 回答:白萝卜可以辅助减肥,但一周内瘦10斤并不现实。
白萝卜能清热利湿、促进肠道蠕动,有助于减肥。
抽脂手术能快速瘦身,需穿塑身衣塑形。
平时需多活动身体,避免高脂高热量食物,以清淡饮食和粗纤维为主,有益于减肥。
科学饮食加上合理运动是健康减肥的关键。
每天跑步5公里能减肥吗 回答:每天跑步5公里可以减肥,长期坚持效果明显,分解脂肪达到瘦身目标。
若身体肥胖,可选择埋线手术治疗,同时多吃高纤维素食物。
小米粥减肥法7天瘦15斤 回答:小米粥减肥法无科学依据,不能依靠其达到短期瘦身目标。
小米营养丰富,适用于养护身体,但并不具备显著的减肥效果。
若需减肥,建议采用科学方式,如医院埋线减肥法。
此法通过高分子蛋白线穴位埋线刺激,促进体内脂肪燃烧,实现减肥目的。
建议根据自身情况选择适合的减肥方式。
奇亚籽减肥正确吃法 回答:奇亚籽减肥法,需用温开水饭前食用以加速胃肠蠕动。
然而其效果并不显著,想要有效减肥,可考虑三甲医院的水动力吸脂手术。
此手术通过增大水流压力,迅速吸取体内多余脂肪,实现快速瘦身。
建议咨询医生获取更多信息。
减肥掉的头发还能长回来吗 回答:减重可能导致身体营养缺乏或过度节食,进而导致脱发。
然而,头发通常会在一段时间约一至两个月后自然恢复生长。
若需进一步减肥并避免脱发问题,可选择埋线法,此方法通过植入可吸收的蛋白线至相应穴位,有效抑制食欲,实现减脂减重的同时,不损害头发健康。
怎么煮苹果减肥最有效 回答:煮苹果减肥的最佳时间为饭后两小时,水煮苹果能促进消化,增强饱腹感,抑制其他食物摄入,从而达到减肥效果。
抽脂手术也是一种有效的减肥方式,通过负压吸引原理抽出多余脂肪。
两种方法均可实现减肥目标。
吃豆腐减肥还是增肥 回答:豆腐既不是减肥食品,也不会导致增肥。
它含有高质量蛋白质,热量不高,能补充营养并增强抵抗力。
若需减脂,超声溶脂可加速脂肪燃烧和代谢。
燃脂片减肥有什么危害 回答:燃脂片减肥可能带来月经失调和肝脏损伤等危害。
建议避免使用减肥药来减肥,选择健康的方法如埋线减肥、抽脂手术等,同时控制饮食并做适量有氧运动来达到减肥目的。
减肥应注重健康,避免药物副作用对身体造成损害。
白萝卜十天减肥20斤 回答:白萝卜并不能在十天内实现减肥20斤的目标。
虽然其营养价值高并能促进肠道蠕动,但仅能起到辅助减肥的作用。
若追求有效减肥,可考虑抽脂手术,通过小切口抽取皮下多余脂肪组织,实现快速减肥效果。
此方法需在专业医疗机构进行,确保安全有效。
晚餐吃什么健康又营养还减肥 回答:健康营养的晚餐选择应侧重新鲜水果蔬菜与粗粮,它们富含膳食纤维和维生素,促进肠道蠕动,有助于减肥。
若追求快速效果,可考虑抽脂手术,该手术通过负压吸引原理迅速抽出堆积脂肪,实现减肥目标。
晚餐的饮食结合合理运动,是健康减肥的有效方式。
喝黑咖啡可以减肥吗 回答:喝黑咖啡对减肥有一定作用,但需适量饮用,长期依赖可能导致身体损伤。
若追求有效减肥,可选择埋线减肥或水动力吸脂手术。
减肥期间应控制饮食,避免油腻和高热量食物。
建议适量运动,保持健康生活方式。
每天慢走一小时能减肥吗 回答:每天慢走一小时有助于减肥,慢走能分解体内脂肪并加速新陈代谢。
但慢走减肥效果需长期坚持,如影响美观,可选择埋线手术治疗,蛋白线埋入穴位刺激消耗多余热量,快速瘦身。
减肥期间早餐应该吃什么 回答:减肥期间早餐推荐全麦面包和脱脂牛奶,也可适量食用小米粥和馒头。
为有效减肥,除饮食调整外,还可选择正规医院进行吸脂手术或注射溶脂针。
溶脂针能迅速溶解皮下脂肪组织,需连续注射数次以达到最佳效果。
重视早餐,选择健康食物,有助于减肥过程更加顺利。
他收养孤女,长大后纳为小妾,最后却下令枪杀
在杨森的姨太太当中,曾桂枝算是最有故事的女子了,她本是贵州的毕节人,出生于贫寒之家,后来父母早逝,她就成了一个孤儿,靠吃百家饭长大,那次,杨森带着部队路过毕节,正巧就看到曾桂枝站在路边,衣衫单薄、瑟瑟发抖的样子,他顿时起了恻隐之心,让部下将曾桂枝带上了。
看她年纪小,杨森就干脆把她认作了养女,并且还让贤惠稳重的三姨太刘谷芳抚养,为她改名为杨家桂,杨家桂来了杨森家里,生活条件大大好转,慢慢地出落得好看白皙了许多,相比起刚来的时候,模样也俊俏了不少。
三姨太天天把她带在身边,像对待亲生女儿那样对待她,只是,这时候,杨森却悄然喜欢上了杨家桂,之后他便提出要纳杨家桂为妾,为此,还又把她的名字改回了“曾桂枝”,就这样,曾桂枝变成了杨森的七姨太。
从那以后,杨森对曾桂枝备加宠爱,他喜欢有文化的女子,也希望自己宠爱的曾桂枝更加优秀,所以就为她请来了家教补习,而后又把她送到了上海去求学,只为将来她跟着自己出席各种场合更加游刃有余。
然而,曾桂枝在学校学习的同时,也和一位同学产生了感情,两人很快在学校出双入对了,杨森很快就知道了这件事情,他是个城府极深的人,虽然心中愠怒脸上也不表现出来,他写了一封家书,把曾桂枝叫了回来,曾桂枝这时候还以为杨森不知道他们的事情,还和杨森提及陈同学,说他在学校帮她很多,希望杨森为他谋个职位,杨森也答应了。
就这样,曾桂枝高高兴兴地为恋人去信,要他来重庆,而杨森就在途中把他给杀害了,曾桂枝在接恋人的路上也被杨森下令枪杀,之后他又命人将二人缚上巨石,沉入了渠江…… 随机文章先秦诸子何以兴盛?世界十大变态武器,核弹/毒气弹/空包弹纷纷上榜(沾满鲜血)海王星的卫星有几个,海卫一直径最大/逆海王星而行(共14个)月亮的别称有哪些,月亮别称和诗句(银钩/玉钩/玉兔/玉弓/嫦娥)中老年人抵抗力差,中老年人最常见的十大病(高血压/心脏病/血栓)