Código fuente semanal MACD
DIFF: media móvil (cierre, 12) - media móvil (cierre, 26);
DEA: EMA (DIFF, 9);
MACD: = 2 * (DIFF-DEA); );
RMACD:=REF(MACD,1);
MACDM:MACD;
Ayudando (MACD gt;=RMACD,0,MACD,COLORRED) , 0);
Ayuda (MACD lt; RMACD, 0, MACD, RGB (69, 164, 13),
Esta es una barra ancha, no muy estrecha); Mandarin Finance solo puede hacer esto.
上篇: Cómo usar gdb con proceso de depuración desconectado en LinuxEn el kernel de Linux 2.5.60 y superior, GDB proporciona la opción follow-fork-mode para admitir el uso del subproceso de creación fork/vfork Los programas realizan depuración multiproceso. El uso del modo follow-fork es el siguiente: establecer follow-fork-mode [parentchild] parent: continúe depurando el proceso padre después de la bifurcación y el proceso hijo no se verá afectado. hijo: depura el proceso hijo después de la bifurcación, el proceso padre no se verá afectado. Por lo tanto, si necesita depurar un proceso hijo, después de iniciar gdb: (gdb) configure el modo hijo de seguimiento y establezca un punto de interrupción en el código del proceso hijo. También hay un parámetro detach-on-fork, que se utiliza para indicar si GDB está fuera de depuración después de que se bifurca el proceso, o si está completamente controlado por GDB: configure detach-on-fork [onoff] on: off: GDB controlará el proceso principal y el proceso secundario. El proceso especificado en el modo follow-fork se depurará y otros procesos se suspenderán. Tenga en cuenta que es mejor usar GDB 6.6 o superior; si está usando GDB 6.4, solo existe el modo follow-fork. El uso de follow-fork-mode/detach-on-fork es relativamente simple, pero debido a las limitaciones de su versión kernel/gdb del sistema, solo podemos usarlo en sistemas compatibles. Además, dado que la depuración del modo follow-fork debe comenzar desde el proceso padre, no es conveniente depurar un sistema con tantas bifurcaciones que tienen nietos o bisnietos, como el sistema de 3 procesos que se muestra en la figura. figura de arriba. Adjuntar subprocesos Como usted sabe, GDB puede adjuntar a un proceso en ejecución con el comando adjuntar lt;pidgt; Por lo tanto, podemos usar este comando para adjuntarlo a un proceso hijo y luego depurarlo. Por ejemplo, si queremos depurar el proceso RIM_Oracle_Agent.9i, primero debemos obtener el pid del proceso [root@tivf09 tianq]# ps -efgrep RIM_Oracle_Agent.9i nadie 6722 6721 0 05:57 00:00:00 RIM_Oracle_Agent.9i root 7541 27816 0 06: 10 pts/3 00:00:00 grep -i rim_oracle_agent.9i Como se puede ver en pstree, este es un sistema de tres procesos, oserv es el proceso principal del proceso RIM_Oracle_prog y RIM_Oracle_prog es el proceso padre de RIM_Oracle_Agent.9i. [root@tivf09 root]# pstree -H 6722 Ver el proceso a través de pstree Inicie GDB, adjunte al proceso Use GDB para conectarse al proceso Ahora puede depurar. Un nuevo problema es que los procesos secundarios siguen ejecutándose y después de adjuntarlos ni siquiera sé a dónde fueron. ¿Hay alguna manera de resolver este problema? Una forma es depurar el código inicial del subproceso. Por ejemplo, agregar un código especial al comienzo de la función principal para hacer que el subproceso duerma en un bucle, esperar a que se establezca una determinada condición y luego establecer un punto de interrupción. se agrega al segmento de código del proceso y luego se cancela. Se cumplen las condiciones para que el código pueda continuar ejecutándose. En cuanto a las condiciones utilizadas en este código, depende de su preferencia. Por ejemplo, podemos verificar el valor de una variable de entorno específica o verificar si existe un archivo específico. 下篇: