enebular의 파일 기능을 사용하여 대상 호스트에 C 언어 코드의 디버깅 동작을 시도합니다

5162 단어 enebular

이번 일


enebular 기능 대신 Flows 기능Files을 사용하고요금 방안 개발 업체의 호스트에서 프로그램을 실행해 보았다.

확인한 일


C 언어 파일을 디버깅할 때 프로그램 대상에서 컴파일할 수 있는 실행 파일을 확인했습니다.

대상 호스트 환경


  • AWS EC2 Debian에서 enebular-agent설치하다.를 진행한 호스트

  • 잇닿다: AWS IoT
  • 프로그램 내용


    실행할 때 텍스트 파일에 문자열을 추가하는 간단한 프로그램입니다.
  • 프로그램 코드 파일main.c
  • 프로그램을 컴파일하고 실행하는 스크립트 파일main입니다.sh

    코드


    main.c
    #include <stdio.h>
    
    int main(void)
    {
        FILE * fp;
    
        fp = fopen( "./test.txt" , "a" );
        if( fp == NULL ) {
            printf( "file open error\n" );
            return -1;
        }
    
        fputs("-----+\n" , fp );
    
        fclose(fp);
        return 0;
    }
    
    main.sh
    gcc -o main main.c ; ./main
    

    확인 단계


    미리sh 파일프로그램 설계,main을 미리 사용합니다.c 파일 프로그램 설계 은 동시에 컴파일하여 실행할 수 있습니다.

    1. main.sh 파일 처리



    2. main.c 파일 디버깅 중


    Stage를 Post-Deploy, main으로 설정합니다.c 파일 디버깅 후 Asseets Path에서 지정한 파일을 실행합니다.여기는main입니다.sh를 지정합니다.

    3. 실행 파일이 생성되었는지 확인


    대상 폴더 '/home/enebular/enebular-runtime-agent/ports/awsiot/assets' 를 확인한 후main 파일이 존재하는지 확인합니다.
    [root@ip-10-1-10-153:/home/enebular/enebular-runtime-agent/ports/awsiot/assets# ls -l
    total 24
    -rwxr-xr-x 1 enebular enebular 8792 Dec  5 06:28 main
    -rw-r----- 1 enebular enebular  239 Dec  5 06:28 main.c
    -rwxr----- 1 enebular enebular   28 Dec  5 06:27 main.sh
    -rw-r--r-- 1 enebular enebular    7 Dec  5 06:28 test.txt
    [root@ip-10-1-10-153:/home/enebular/enebular-runtime-agent/ports/awsiot/assets#
    

    4. 프로그램 실행 여부 확인


    디버그 대상 폴더 '/home/enebular/enebular-runtime-agent/ports/awsiot/assets' 를 확인한 후 테스트합니다.txt 파일이 존재하는지 확인하고 이 테스트를 확인하십시오.txt 파일의 내용이 "-----+"인지 확인합니다.
    [root@ip-10-1-10-153:/home/enebular/enebular-runtime-agent/ports/awsiot/assets# ls -l
    total 24
    -rwxr-xr-x 1 enebular enebular 8792 Dec  5 06:28 main
    -rw-r----- 1 enebular enebular  239 Dec  5 06:28 main.c
    -rwxr----- 1 enebular enebular   28 Dec  5 06:27 main.sh
    -rw-r--r-- 1 enebular enebular    7 Dec  5 06:28 test.txt
    [root@ip-10-1-10-153:/home/enebular/enebular-runtime-agent/ports/awsiot/assets# cat test.txt 
    -----+
    root@ip-10-1-10-153:/home/enebular/enebular-runtime-agent/ports/awsiot/assets# 
    

    요약(소감)

  • 이번에 C 언어를 사용했지만 호스트에서 실행되는 언어라면 실행할 수 있을 것 같아서 다른 언어를 시도해 보고 싶어요
  • 노드 RED의 절차를 통해 실현할 수 없거나 어려운 경우 이번 방법으로 실현할 수 있을 것 같다
  • 호스트는 오지에 위치하여 코드 수정이 불가능하거나 여러 호스트에 대응할 수 있기 때문에 사용할 수 있는 경우가 많다
  • 루트 사용자 권한에 따른 설정이나 호스트 재부팅 등은 확인되지 않았지만 만들 수 있을 것 같아서 앞으로 해보고 싶어
  • 좋은 웹페이지 즐겨찾기